繁体   English   中英

Python 链表查询

[英]Python Linked List Query

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

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 过去指向的引用的参考,就可以了。 在这种情况下,因为您保持头脑清醒,所以您总是能够按照自己的方式浏览列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM