python怎么实现单向链表

这篇文章主要介绍“python怎么实现单向链表”,在日常操作中,相信很多人在python怎么实现单向链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python怎么实现单向链表”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

淮上ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

什么是链表

链表顾名思义是~链

链表是一种动态数据结构,其特点是使用一组任意的存储单元来存储数据元素。链表中的每个元素都成为一个“节点”,每个节点由一个数据字段和一个指针字段组成。与数组不同,链表不必预先定义大小,如果有硬件支持,它们可以无限扩展。

链表与数组的不同点:

阵列需要预定义的大小,无法适应数据的动态增减。如果数据小于定义的长度,将会浪费内存。如果数据超过预定义的长度,则无法插入。链表是动态添加和删除的数据,可以随意添加。

数组适合获取元素的操作,可以直接获取索引。链表获取元素比较麻烦,需要一直找。但是它们适合添加和删除,所以可以直接修改节点的指向。但是数组比较麻烦。例如,[1,2,3,4]需要在下标1处插入-2,所以需要将[2,3,4]移回并赋值LS  [1]=

数组从栈中分配空间,对于程序员来说方便快捷,但是自由度很小。链表从堆中分配空间,自由度大,但是应用管理麻烦。

链表基本方法实现(Python)

1. 初始化链表

'''节点类' ' '

类别节点(对象):

def__init__(self,data):

self.data=数据

self.nex=无

def__init__(self):

''初始化链接列表'''

self  . head=None

2. 获取链表长度

def  _ _ len  _ _(self):

pre=self.head

长度=0

while  prep  :

长度=1

pre=pre.nex

返回长度

3. 追加节点

添加节点相对简单。如果头节点不存在,则当前节点为头节点,否则,查找尾节点,并将尾节点的下一个指向当前节点(可以添加头和尾两个节点,不必递归查找尾节点)

python怎么实现单向链表

''追加节点'''

defappend(自身,数据):

'''

1.头是none  :头节点

2.tail.nex  - node

:paramdata:

:return:

'''

节点=节点(数据)

ifself.headisNone:

self.head=node

else:

pre=self.head

whilepre.nex:

pre=pre.nex

Pre.nex=node

4. 获取节点

获取节点也相对容易,无非是判断指标值的正负

defget(自身,索引):

'''

:paramindex:

:return:

'''

index=indexifindex=0 elselen(self)索引

iflen(self)indexorindex0:

返回无

pre=self.head

whileindex:

pre=pre.nex

index-=1

Returnpre

5. 设置节点

查找当前节点并分配它

''设置节点'''

defset(自身、索引、数据):

node=self.get(index)

ifnode:

node.data=数据

Returnnode

6. 插入节点

要插入一个节点,需要找到前一个节点pre_node(索引索引为正或负,前一个节点不同,需要判断),然后将pre_node.nex指向当前节点。同时,将当前节点的nex指向pre_node.nex.nex

python怎么实现单向链表

''插入节点'''

定义插入(自身、索引、数据):

'''

1.1 .索引插入节点位置包括正数和负数

2.查找索引

-1-->pre_node的节点 3.pre_node.next-->node node.next-->pre_node.next.next 4.head :paramindex: :paramdata: :return: """ node=Node(data) ifabs(index+1)>len(self): returnFalse index=indexifindex>=0elselen(self)+index+1 ifindex==0: node.nex=self.head self.head=node else: pre=self.get(index-1) ifpre: nex=pre.nex pre.nex=node node.nex=nex else: returnFalse returnnode

7. 删除节点

删除节点,也要区分一下索引的正负。找到当前节点的前一个节点pre_node和后一个节点next_node,将pre_node.nex–>next_node即可

python怎么实现单向链表

"""删除某个元素"""
defdelete(self,index):
f=indexifindex>0elseabs(index+1)
iflen(self)<=f:
returnFalse
pre=self.head
index=indexifindex>=0elselen(self)+index
prep=None
whileindex:
prep=pre
pre=pre.nex
index-=1
ifnotprep:
self.head=pre.nex
else:
prep.nex=pre.nex
returnpre.data

8. 反转链表

反转链表的实现有多种方式,比较简单的就是生成一个新的链表--》可以用数组存储所有节点让后倒序生成新的链表
在这里用下面这种方式生产:
反转链表就是将node.nex–>pre_node 递归实现即可,然后让tail赋值为head

python怎么实现单向链表

"""反转链表"""
def__reversed__(self):
"""
1.pre-->next转变为next-->pre
2.pre若是head则把pre.nex-->None
3.tail-->self.head
:return:
"""
defreverse(pre_node,node):
ifpre_nodeisself.head:
pre_node.nex=None
ifnode:
next_node=node.nex
node.nex=pre_node
returnreverse(node,next_node)
else:
self.head=pre_node
returnreverse(self.head,self.head.nex)

9. 清空链表

将头赋为空就好

"""清空链表"""
defclear(self):
self.head=None

到此,关于“python怎么实现单向链表”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!

网站标题:python怎么实现单向链表
本文网址:https://www.cdcxhl.com/article36/ghcisg.html

成都网站建设公司_创新互联,为您提供服务器托管响应式网站用户体验标签优化品牌网站设计品牌网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计