簡體   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