博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 数据结构中的链表操作
阅读量:6818 次
发布时间:2019-06-26

本文共 1428 字,大约阅读时间需要 4 分钟。

链表的定义:

  链表(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()

 

转载于:https://www.cnblogs.com/python-1807/p/10087292.html

你可能感兴趣的文章
系统查看硬件相关信息命令
查看>>
sublime 3 text 中运行Java
查看>>
前序遍历
查看>>
loadrunner检查点设置失败,日志中SaveCount无法被正常统计出来
查看>>
循环结构进阶
查看>>
bzoj 2809: [Apio2012]dispatching
查看>>
关于数据库查询时报“query block has incorrect number of result columns”
查看>>
记录一款Unity VR视频播放器插件的开发
查看>>
webApi跨域问题
查看>>
读取文件
查看>>
json字符串转换对象的方法1
查看>>
浅谈网站路径分析 转自“蓝鲸网站分析博客”
查看>>
C# Note36: .NET unit testing framework
查看>>
我的博客第一天
查看>>
margin注意问题
查看>>
事物的回滚
查看>>
Xcode7 iOS9.0 的真机调试
查看>>
Constraint3:check约束 和 null
查看>>
Fabric 1.0环境搭建
查看>>
c冒泡排序
查看>>