双向链表(Doubly Linked List)在Python中的实现
双向链表是一种链表数据结构,每个节点都有两个指针,一个指向前一个节点,一个指向后一个节点。这种数据结构可以支持双向迭代,即可以从前向后或从后向前访问链表中的元素。在Python中,我们可以使用一个类来实现双向链表。
以下是一个简单的双向链表的实现:
class Node: def __init__(self, data=None, prev=None, next=None): self.data = data self.prev = prev self.next = next class DoublyLinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if self.head is None: self.head = new_node return current_node = self.head while current_node.next is not None: current_node = current_node.next current_node.next = new_node new_node.prev = current_node def prepend(self, data): new_node = Node(data) if self.head is None: self.head = new_node return self.head.prev = new_node new_node.next = self.head self.head = new_node def print_list(self): current_node = self.head while current_node is not None: print(current_node.data) current_node = current_node.next
在上面的代码中,我们定义了一个 Node
类和一个 DoublyLinkedList
类。Node
类表示链表中的一个节点,它包含一个数据域 data
和两个指针域 prev
和 next
,分别指向前一个节点和后一个节点。
DoublyLinkedList
类实现了双向链表的基本操作,如插入节点、删除节点和遍历链表等。其中,append()
方法可以在链表的末尾添加一个新节点,prepend()
方法可以在链表的头部添加一个新节点,print_list()
方法可以遍历整个链表并打印出其中的元素。
下面是使用上面的双向链表实现的一个简单示例:
# 创建一个双向链表,并在尾部添加几个节点 dll = DoublyLinkedList() dll.append('p') dll.append('i') dll.append('d') dll.append('a') dll.append('n') dll.append('c') dll.append('o') dll.append('d') dll.append('e') dll.append('.') dll.append('c') dll.append('o') dll.append('m') # 在头部添加一个新节点 dll.prepend('皮蛋编程') # 遍历链表并打印出其中的元素 dll.print_list()
运行上面的代码,输出结果如下:
皮蛋编程 p i d a n c o d e . c o m
从输出结果可以看出,我们成功地创建了一个双向链表,并可以从头到尾遍历链表中的元素。
相关文章