📜  python 链表的大小 - Python (1)

📅  最后修改于: 2023-12-03 15:19:12.358000             🧑  作者: Mango

Python 链表的大小

链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个元素和指向下一个节点的指针。Python 中可以通过定义 Node 类和 LinkedList 类来实现链表。

定义 Node 类

Node 类代表链表中的节点,它包含两个属性:data 和 next。data 存储节点的元素,next 存储指向下一个节点的指针。Node 类还定义了一个 init() 方法,用于初始化节点。

class Node:
    def __init__(self, data=None):
        self.data = data
        self.next = None
定义 LinkedList 类

LinkedList 类用于表示链表,它包含一个头节点 head,初始值为 None。LinkedList 类还定义了一系列方法来操作链表,例如添加节点、删除节点、遍历链表等。其中,size() 方法用于返回链表的大小。

class LinkedList:
    def __init__(self):
        self.head = None
    
    def add_node(self, data):
        new_node = Node(data)
        if self.head is None:
            self.head = new_node
        else:
            current_node = self.head
            while current_node.next is not None:
                current_node = current_node.next
            current_node.next = new_node
    
    def remove_node(self, data):
        if self.head is None:
            return
        if self.head.data == data:
            self.head = self.head.next
            return
        current_node = self.head
        while current_node.next is not None:
            if current_node.next.data == data:
                current_node.next = current_node.next.next
                return
            current_node = current_node.next
    
    def traverse(self):
        current_node = self.head
        while current_node is not None:
            print(current_node.data)
            current_node = current_node.next
    
    def size(self):
        count = 0
        current_node = self.head
        while current_node is not None:
            count += 1
            current_node = current_node.next
        return count
使用 LinkedList 类

可以通过实例化 LinkedList 类来创建链表并进行操作。以下是一个示例:

# 创建链表
my_list = LinkedList()

# 添加节点
my_list.add_node("apple")
my_list.add_node("banana")
my_list.add_node("cherry")

# 遍历链表
my_list.traverse()

# 输出链表大小
print("链表大小:", my_list.size())

# 删除节点
my_list.remove_node("banana")

# 遍历链表
my_list.traverse()

# 输出链表大小
print("链表大小:", my_list.size())

输出结果如下:

apple
banana
cherry
链表大小: 3
apple
cherry
链表大小: 2

可以看出,链表大小在添加和删除节点时会动态更新。