Python链接列表查询

时间:2016-07-08 20:48:45

标签: python object linked-list

以下是我遇到的一些问题的代码:

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吗?程序如何具有以前节点的记忆?

比你。

2 个答案:

答案 0 :(得分:1)

不,没有创建新的当前对象,而是重新分配变量current,直到它到达列表中的最后一个元素,然后才创建新的Node对象并将其分配给列表的末尾。

答案 1 :(得分:1)

Current是指向到Node对象的局部变量。覆盖电流不会破坏Node,它只会使当前指向其他东西。只要你参考过去指的是什么,你就没事了。在这种情况下,因为你保持 head ,你总是可以按照列表的方式工作。