我正在尝试在Python上实现单链表,下面的代码可以正常工作,但我不明白它是如何工作的:
class Node(object):
def __init__(self, data=None, ):
self.value = data
self.next = None
class LinkedList1(object):
def __init__(self, data=None):
self.head = Node(data)
self.tail = self.head
self.length = 1
def append(self, data):
self.tail.next = Node(data)
self.tail = self.tail.next
self.length += 1
return self
def show_list(self):
head_copy = self.head
while head_copy is not None:
print(head_copy.value)
head_copy = head_copy.next
当我们测试它时:
linkin = LinkedList1(10)
linkin.append(20)
linkin.append(30)
linkin.append(40)
linkin.show_list()
输出:
10
20
30
40
我不理解的是append函数。我知道self.tail
引用了self.head
,但是为什么self.tail.next
会在最后一个next处添加新的Node(data)
,按照我的逻辑,没有循环的情况下应该添加到第一个next。
另外,如果我们这样编写函数:
def append(self, data):
self.head.next = Node(data)
self.tail = self.head.next
self.length += 1
return self
即使self.tail
引用self.head
,这也不起作用。
我知道我在这里缺少了什么。你能帮我理解吗?
谢谢。