这是我遇到一些问题的代码:
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
因此,用参数数据创建了一个新节点,这将是从现在开始的新头。因此,如果我尝试向此列表添加新节点,则会触发 else 并生成新节点:
current.next
已创建。到目前为止,一切都很好。现在,如果我想添加另一个节点,else 条件将再次触发,但正在创建一个新的当前对象,这不会覆盖旧当前对象的内存,从而覆盖 current.next 吗?程序如何拥有之前节点的内存?
比你。
最佳答案
Current 是一个指向 Node 对象的局部变量。覆盖 current 不会破坏 Node,它只是使 current 指向其他东西。只要你有一个当前用来指向的内容的引用,就可以了。在这种情况下,由于您能保持头脑清醒,因此您始终能够按照自己的方式完成列表。
关于Python 链表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275181/