링크 된 나는 몇 가지 문제가 있어요 코드입니다 :파이썬은 다음 목록 쿼리를
class Node(object):
def __init__(self, data):
self.data = data
self.next = None
class Solution(object):
def insert(self, head, data):
if head == None:
head = Node(data)
else:
current = head
while current.next:
current = current.next
current.next = Node(data)
return head
def display(self, head):
current = head
while current:
print(current.data)
current = current.next
코드 자체는 잘 작동하지만 문제가 삽입 기능을 이해하는 데 문제가 있습니다. 처음에는
Head == None
이렇게 새 노드가 인수 데이터로 만들어 지므로 지금부터 새로운 머리가됩니다. 나는이 목록에 새 노드를 추가하려고하면 그래서, 다른 트리거되고 새 노드 :
current.next
가 생성됩니다. 여태까지는 그런대로 잘됐다. 이제 또 다른 노드를 추가하고 싶다면 else 조건이 다시 트리거되지만 새로운 현재 오브젝트가 생성됩니다. 이렇게하면 이전 현재와 current.next의 메모리를 덮어 쓰지 않을까요? 프로그램은 어떻게 이전 노드의 메모리를 가질 수 있습니까 ??
너보다.
개체를 이름에 바인딩하는 것은 * 참조를 값별로 전달하는 것과 같습니다. 새로운 객체는 생성되지 않고 기존 객체에 대한 새로운 참조 만 생성됩니다. 'current = current.next'는 *'* current.next'를 복사하지 않고'current.next'에 의해 참조 된 객체를 단지'current'에 의해 참조되도록 할당합니다. – MisterMiyagi
나는 다른 대답 중 하나를 최고의 대답으로 선택해야했지만 귀하의 의견은 나를 가장 잘 이해하는 데 도움이되었습니다. @MisterMiyagi – MathsIsHard