用Python实现链表
```
class Node:
def __init__(self, value):
self.value = value
self.next = None
class LinedList:
def __init__(self):
# 是头也是整条链,通过None实现嵌套了多个Node实例,有多少个节点就嵌套了多少层,每个节点有两个属性,一个是值,另一个指向下一个节点的指针,恰好就对应了Node的两个类属性
# Node的属性实际存的是下一个节点的整个对象,而非一个指针或地址;每一层的next中都是存了下一个节点的整个对象,有点递归的感觉
self.head = None
def add_node(self,value):
"""
添加节点
last_node = self.head 这里由于self.head对应的非空对象是一个可变对象,故last_node的任何修改其实就是在修改self.head
"""
# 首个节点
if not self.head:
self.head = Node(value)
return
# 非首个节点
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = Node(value)
def print_linkedlist(self):
"""
打印链表所有节点的值
"""
current_node = self.head
while current_node:
print(current_node.value)
current_node = current_node.next
if __name__ == '__main__':
L = LinedList()
L.add_node(1)
L.add_node(2)
L.add_node(3)
L.add_node(4)
L.print_linkedlist()
```