我试图连接一个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