我试图将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