以下是我遇到的一些问题的代码:
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
因此,使用参数数据创建一个新的Node,从现在开始,这将是新的头。因此,如果我尝试将新节点添加到此列表中,则会触发else并使用新节点:
current.next
已创建。到现在为止还挺好。现在,如果我想添加另一个节点,else条件将再次触发,但是正在创建一个新的当前对象,这不会覆盖旧电流的内存,因此会覆盖current.next吗?程序如何具有以前节点的记忆?
比你。
答案 0 :(得分:1)
不,没有创建新的当前对象,而是重新分配变量current,直到它到达列表中的最后一个元素,然后才创建新的Node对象并将其分配给列表的末尾。
答案 1 :(得分:1)
Current是指向到Node对象的局部变量。覆盖电流不会破坏Node,它只会使当前指向其他东西。只要你参考过去指的是什么,你就没事了。在这种情况下,因为你保持 head ,你总是可以按照列表的方式工作。