📅  最后修改于: 2023-12-03 15:19:12.358000             🧑  作者: Mango
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个元素和指向下一个节点的指针。Python 中可以通过定义 Node 类和 LinkedList 类来实现链表。
Node 类代表链表中的节点,它包含两个属性:data 和 next。data 存储节点的元素,next 存储指向下一个节点的指针。Node 类还定义了一个 init() 方法,用于初始化节点。
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
LinkedList 类用于表示链表,它包含一个头节点 head,初始值为 None。LinkedList 类还定义了一系列方法来操作链表,例如添加节点、删除节点、遍历链表等。其中,size() 方法用于返回链表的大小。
class LinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current_node = self.head
while current_node.next is not None:
current_node = current_node.next
current_node.next = new_node
def remove_node(self, data):
if self.head is None:
return
if self.head.data == data:
self.head = self.head.next
return
current_node = self.head
while current_node.next is not None:
if current_node.next.data == data:
current_node.next = current_node.next.next
return
current_node = current_node.next
def traverse(self):
current_node = self.head
while current_node is not None:
print(current_node.data)
current_node = current_node.next
def size(self):
count = 0
current_node = self.head
while current_node is not None:
count += 1
current_node = current_node.next
return count
可以通过实例化 LinkedList 类来创建链表并进行操作。以下是一个示例:
# 创建链表
my_list = LinkedList()
# 添加节点
my_list.add_node("apple")
my_list.add_node("banana")
my_list.add_node("cherry")
# 遍历链表
my_list.traverse()
# 输出链表大小
print("链表大小:", my_list.size())
# 删除节点
my_list.remove_node("banana")
# 遍历链表
my_list.traverse()
# 输出链表大小
print("链表大小:", my_list.size())
输出结果如下:
apple
banana
cherry
链表大小: 3
apple
cherry
链表大小: 2
可以看出,链表大小在添加和删除节点时会动态更新。