class Node:
def __init__(self, data):
self.data = data # 节点存储的数据
self.next = None # 指向下一个节点的引用
class LinkedList:
def __init__(self):
self.head = None # 链表的头节点
def is_empty(self):
return self.head is None
def append(self, data): # 尾插法
new_node = Node(data)
if self.is_empty():
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
def prepend(self, data): # 头插法
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def delete(self, key): # 删除
current = self.head
previous = None
while current and current.data != key:
previous = current
current = current.next
if current is None:
return
if previous is None:
self.head = current.next
else:
previous.next = current.next
def search(self, key): # 查找
current = self.head
while current and current.data != key:
current = current.next
return current is not None
def display(self):
elements = []
current = self.head
while current:
elements.append(current.data)
current = current.next
print(elements)
if __name__ == "__main__":
# 创建一个单链表实例
linked_list = LinkedList()
# 添加元素到链表
linked_list.append(10)
linked_list.append(20)
linked_list.append(30)
# 在链表头部添加元素
linked_list.prepend(5)
# 显示链表
linked_list.display() # 输出: [5, 10, 20, 30]
# 查找元素
print("Search for 20:", linked_list.search(20)) # 输出: True
print("Search for 25:", linked_list.search(25)) # 输出: False
# 删除元素
linked_list.delete(20)
linked_list.display() # 输出: [5, 10, 30]
单链表:头插、尾插、删除、查找Python
最新推荐文章于 2024-10-18 00:00:00 发布