Python数据结构之链表(linked list)

Python数据结构之链表(linked list)

链表简介

链表是由一系列的节点(node)来实现的,通过每一个node存储下一个节点的指针来实现一种快速的插入。此外每个节点都有一个cargo包含一定的数据。根据链表结构的不同,其种类可以分为单向链表、单项循环链表、双向链表、双向循环链表等。

代码实现
  • 创建链表

由于链表的功能是依靠节点来完成的,所以链表的建立必然要先建立节点类。我们通过节点间传递值的方式将指针指向下一个节点。

  • 链表的遍历

在创建完链表之后,可以通过输入第一个节点的方式遍历整个链表

  • 链表的插入

在链表中插入一个元素指的是将指针从一个已经存在的节点指向一个新插入的节点。代码中只有左端和右端插入,中间插入也一样。

  • 链表的删除

    参考链表的遍历以及插入

# 创建一个新链表
class Node:
    def __init__(self, dataval=None):
        self.dataval = dataval
        self.nextval = None

class SLinkList:
    def __init__(self):
        self.headval = None

    # 链表遍历
    ## 创建完链表之后,可以通过输入第一个节点的方式遍历整个链表
    # 打印链表
    def show(self):
        printval = self.headval
        while printval:
            print(printval.dataval)
            printval = printval.nextval
    # 插入
    # 在链表中插入一个元素指的是将指针从一个已经存在的节点指向一个新插入的节点。取决于不同的插入位置,主要有以下几种情形。
    # 插入在链表开头
    def add_left(self, newdata):
        tem = self.headval
        NewNode = Node(newdata)
        self.headval = NewNode
        NewNode.nextval = tem
    # 在链表末尾添加一个新的node
    def append_right(self, newdata):
        NewNode = Node(newdata)
        if self.headval is None:
            self.headval = NewNode
        laste = self.headval
        while (laste.nextval):
            laste = laste.nextval
        laste.nextval = NewNode
链表案例
创建链表
li = SLinkList()
li.headval = Node("Mon")
e2 = Node("Tue")
e3 = Node('Wed')
# 连接各个节点
li.headval.nextval = e2
e2.nextval = e3

# print(e2.nextval)
# #结果为e3内存地址<__main__.Node object at 0x0000001A0F9644BE0>
# print(e2.nextval.dataval)
# #结果为e3所代表的值Wed

# 链表的遍历
li.show()

# 链表的插入
li.add_left('sun')
li.append_right("Thu")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值