我試圖連接一個Python鏈接列表而不復制包含在列表節點中的數據。我有一個函數將使用傳入的節點的副本連接列表,但似乎無法獲得不使用副本的函數。連接Python鏈接列表
這些功能用於測試和計時目的;我知道Python的內置列表非常棒!
這是我一直在使用的類和連接函數。
class Cell:
def __init__(self, data, next = None):
self.data = data
self.next = next
def print_list(self):
node = self
while node != None:
print node.data
node = node.next
串聯函數並不意味着是Cell類的成員函數。
def list_concat(A, B):
while A.next != None:
A = A.next
A.next = B
return A
如果參數A有多個節點,此函數將覆蓋列表的第一個元素。我明白爲什麼會發生這種情況,但我不知道如何去修復它。
這裏是我一直在使用這個函數的測試代碼。
e = Cell(5)
test = Cell(3, Cell(4))
test2 = list_concat(test2, e)
test2.print_list()
任何見識或幫助將不勝感激。
*編輯,以修復代碼格式化
你的拼接功能應該工作。請注意'list'不是一個鏈表。我建議你看看lisp的實現,因爲他們使用與你一樣的結構的單元。 – Marcin
我認爲這個實現應該可以工作,但是當我打印列表(test2)時,它列出了4 - > 5 - > None的元素,當它列出3 - > 4 - > 5 - > None時。 –
請注意,在您的代碼示例中,在分配給它之前,您正在使用test2作爲參數。 – Marcin