
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert_at_head(self, val):
new_node = Node(val)
new_node.next = self.head
self.head = new_node
def insert_at_tail(self, val):
new_node = Node(val)
if not self.head:
self.head = new_node
return
current = self.head
while current.next:
current = current.next
current.next = new_node
def delete_node(self, val):
if not self.head:
return False
if self.head.data == val:
self.head = self.head.next
return True
current = self.head
while current.next and current.next.data != val:
current = current.next
if not current.next:
return False
current.next = current.next.next
return True
def reverse(self):
prev = None
current = self.head
while current:
next_node = current.next
current.next = prev
prev, current = current, next_node
def print_list(self):
values = []
current = self.head
while current:
values.append(str(current.data))
current = current.next
print(" -> ".join(values) + " -> None")
if __name__ == "__main__":
list = LinkedList()
print("头插法插入:")
list.insert_at_head(3)
list.insert_at_head(2)
list.insert_at_head(1)
list.print_list()
print("尾插法插入:")
list.insert_at_tail(4)
list.insert_at_tail(5)
list.print_list()
print("删除节点3:")
list.delete_node(3)
list.print_list()
print("反转链表:")
list.reverse()
list.print_list()