python 数据结构中的链表操作

时间:2023-11-22 19:14:26

链表的定义:

  链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列。也就是说,结点包含两部分信息:一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域。链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点。链表中的最后一个结点没有后继元素,其指针域为空。

  

python代码中实现链表的创建、展示链表数据、添加,追加元素、删除元素、统计链表中的元素个数的操作:

# 链表中的节点
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

# 链表:节点管理类
class Link:
    def __init__(self):
# 链表的表头
        self.head = None

# 展示链表中的数据
    def show(self):
        temp = self.head
        while temp:
            print(temp.data)
            temp = temp.next

# 在表头添加元素
    def add(self, item):
# 创建节点
        node = Node(item)
# 新节点的下一个元素指针指向表头
        node.next = self.head
# 新的表头设置为当前节点
        self.head = node

# 在末尾添加元素
    def append(self, item):
# 创建节点
        node = Node(item)
# 判断链表是否为空
        if self.head:
# 找到最后一个元素
            temp = self.head
            while temp.next:
                temp = temp.next
# 使用最后一个元素的next指向新节点
            temp.next = node
        else:
            self.head = node

# 统计链表元素个数
    def length(self):
        count = 0
        temp = self.head
        while temp:
            count += 1
            temp = temp.next
        return count

# 删除元素
    def remove(self, item):
# 记录要删除元素的前面的元素
        prev = None
        temp = self.head
        while temp:
            if temp.data == item:
                if temp is self.head:
                    self.head = temp.next
                else:
                    prev.next = temp.next
                break
            else:
                prev = temp
                temp = temp.next

# 创建链表
link = Link()

# 添加元素
link.add(1)
link.add(2)
link.add(3)

# 追加元素
link.append(4)
link.append(5)
link.append(6)

# 删除元素
link.remove(3)

print(link.length())
print()

link.show()