如何用python实现一个简单的单向链表?

2024-01-07 17:46:37

实现一个简单的单向链表涉及两个基本的构建块:节点(Node)和链表(LinkedList)。下面是详细步骤和解释:

1. 实现节点(Node)

链表中的每个节点通常包含两部分:存储的数据(data)和一个指向下一个节点的引用(next)。节点可以用一个类来实现。

节点类的定义:
class ListNode:
    def __init__(self, data):
        self.data = data  # 存储数据
        self.next = None  # 初始时,下一个节点的引用为空

2. 实现链表(LinkedList)

链表则是节点的集合,通常包含对首个节点的引用,称为头节点(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): 从头节点开始遍历链表,打印出每个节点中的数据,直到链表结束。

一个简单单向链表的实现,涵盖了最基本的操作:添加数据和遍历打印链表。当然,更完整的链表实现可能还包括删除节点、查找数据等操作。

文章来源:https://blog.csdn.net/weixin_43561635/article/details/135439315
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。