python实现一个自定义的链表,支持插入、删除和遍历操作

下面是一个简单的自定义链表实现,支持插入、删除和遍历操作的Python代码示例:

python

class Node:
    """链表节点类"""
    def __init__(self, data):
        self.data = data  # 节点数据
        self.next = None  # 指向下一个节点的指针


class LinkedList:
    """自定义链表类"""
    def __init__(self):
        self.head = None  # 初始化链表头节点

    def insert(self, data):
        """在链表末尾插入新节点"""
        new_node = Node(data)
        if not self.head:
            self.head = new_node  # 如果链表为空,则将新节点设为头节点
            return
        current = self.head
        while current.next:  # 遍历到链表末尾
            current = current.next
        current.next = new_node  # 将新节点添加到链表末尾

    def delete(self, key):
        """删除链表中指定值的节点"""
        current = self.head
        if current and current.data == key:  # 如果要删除的是头节点
            self.head = current.next  # 头节点指向下一个节点
            current = None  # 释放当前节点
            return
        prev = None
        while current and current.data != key:  # 查找要删除的节点
            prev = current
            current = current.next
        if not current:  # 如果没有找到要删除的节点
            return
        prev.next = current.next  # 将前一个节点的指针跳过要删除的节点
        current = None  # 释放当前节点

    def traverse(self):
        """遍历链表并打印节点数据"""
        current = self.head
        while current:  # 遍历整个链表
            print(current.data, end=" -> ")
            current = current.next
        print("None")


# 使用示例
if __name__ == "__main__":
    linked_list = LinkedList()
    linked_list.insert(10)
    linked_list.insert(20)
    linked_list.insert(30)

    print("当前链表:")
    linked_list.traverse()  # 输出: 10 -> 20 -> 30 -> None

    linked_list.delete(20)
    print("删除 20 后的链表:")
    linked_list.traverse()  # 输出: 10 -> 30 -> None

    linked_list.delete(10)
    print("删除 10 后的链表:")
    linked_list.traverse()  # 输出: 30 -> None

    linked_list.delete(30)
    print("删除 30 后的链表:")
    linked_list.traverse()  # 输出: None

代码说明

    Node类:定义了链表的节点,包括数据和指向下一个节点的指针。
    LinkedList类:定义了链表,包含插入、删除和遍历的方法。
        insert(data):在链表末尾插入新节点。
        delete(key):删除链表中值为key的节点。
        traverse():遍历链表并打印节点数据。

示例使用

    在__main__中创建链表,插入几个节点,并进行删除操作,最后输出链表的状态。

请使用浏览器的分享功能分享到微信等