实现一个简单的单向链表涉及两个基本的构建块:节点(Node)和链表(LinkedList)。下面是详细步骤和解释:
链表中的每个节点通常包含两部分:存储的数据(data)和一个指向下一个节点的引用(next)。节点可以用一个类来实现。
class ListNode:
def __init__(self, data):
self.data = data # 存储数据
self.next = None # 初始时,下一个节点的引用为空
链表则是节点的集合,通常包含对首个节点的引用,称为头节点(head)。通过头节点,你可以访问链表中的每个节点。
class LinkedList:
def __init__(self):
self.head = None # 初始时链表为空
# 添加元素到链表末尾
def append(self, data):
new_node = ListNode(data) # 创建新节点
if not self.head: # 如果链表为空,新节点成为第一个节点
self.head = new_node
else: # 否则,遍历到链表末尾,并将最后一个节点的next指向新节点
current = self.head
while current.next:
current = current.next
current.next = new_node
# 遍历链表,打印每个节点的数据
def display(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
创建一个链表并添加数据,然后遍历显示:
# 创建链表实例
my_list = LinkedList()
# 向链表添加数据
my_list.append(1)
my_list.append(2)
my_list.append(3)
# 打印链表
my_list.display() # 输出 1 -> 2 -> 3 -> None
__init__
): 当创建链表实例时,设置头节点为None,表示开始时链表为空。append
): 创建一个新的节点,并将其添加到链表的末尾。这涉及到遍历链表直到找到最后一个节点,然后将其next
引用指向新节点。display
): 从头节点开始遍历链表,打印出每个节点中的数据,直到链表结束。一个简单单向链表的实现,涵盖了最基本的操作:添加数据和遍历打印链表。当然,更完整的链表实现可能还包括删除节点、查找数据等操作。