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()