Python实现单链表,python单链表的基本操作
本文主要详细介绍Python对单向链表的实现。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
单向链表的每个节点由两部分组成:数据字段和指针,指针指向内存中下一个元素的位置。
单向链表的第一个节点是链表头的指针,而最后一个节点的指针设置为None,不指向任何元素。(链表头部的指针很重要!)
用Python实现单向链表,我们可以用一个node类来封装节点,每创建一个节点就生成一个node类的实例。
这里主要实现单向链表中节点的遍历、添加、插入、删除和倒置。
代码如下:
班级播放器:
节点类
def __init__(self):
初始化名称,分数,指针
self.name=
self.score=0
self.next=无
def遍历(head,num=None,is_print=False):
遍历函数,num是要遍历哪个位置的序号,is_print是否触发打印方法
ptr=头
计数=0
而True:
如果数量==计数:
破裂
if ptr.next:
计数=1
ptr=ptr.next
如果是_print:
print(No. str(count),ptr.name,ptr.score,-,ptr . next . name if ptr . next else None)
else:
破裂
Ptr #在遍历完成后返回最后一个节点
define vert(x)3360 # x是链表的第一个节点(即指向头部的指针)
反转链接列表
Y=x.next # y是x的原next。
y如果y为None: # y等于None,表示当前链表只有一个节点。
返回x
X.next=None #将第一个节点的next指向None(因为它是反转的)
而True: #循环则反转以下所有节点。
r=y .接下来
y.next=x
如果r是None: # r是None,这意味着y是原始链表中的最后一个节点。
Y #返回Y,这是倒排链表的第一个节点。
x=y
y=r
head=Player()
而True:
Select=input((1))。添加(2)。视图(3)。插入(4)。删除(5)。反转(6)。离开\ n输入:)
Select== 1 : #添加新节点
Ptr=遍历(head) #获取当前链表的最后一个节点
Next_data=Player() #创建一个新节点
Next_data.name=input (name:)
Next_data.score=input (score:)
next_data.next=无
Ptr.next=next_data #连接节点
Eliselect== 2 : #遍历查看列表中的所有节点。
打印(所有数据如下所示:)
遍历(head,is_print=True) #遍历链表并将打印参数设置为True。
Eliselect== 3 3360 #在链表中的任意位置插入一个节点,位置用序号表示,即第一个节点序号为1,第二个节点序号为2,以此类推。
尝试:
Num=int(input(请输入要插入的节点位置的序号:)#输入的序号必须是大于0的正整数,大于最后一个节点就插入最后一个节点之后。
如果编号为1:
打印(“输入必须是大于0的正整数”)
继续
除了ValueError:
打印(“输入错误”)
继续
Ptr=遍历(head,num-1) #获取需要插入的前一个节点。
插入数据=播放器()
Insert_data.name=input (name:)
Insert_data.score=input (score:)
insert_data.next=ptr.next
ptr.next=insert_data
Eliselect== 4 : #删除链表中的任何节点。
尝试:
Num=int(input(请输入要删除的节点位置的序号:)#输入的序号必须是大于0的正整数,大于最后一个节点则删除最后一个节点。
如果编号为1:
打印(“输入必须是大于0的正整数”)
继续
除了ValueError:
打印(“输入错误”)
继续
Ptr=遍历(head,num-1) #获取要删除的位置的前一个节点
ptr.next=ptr.next.next
Eliselect== 5 : #反转链表
New_first=invert(head.next) #获取新的第一个节点
Head.next=new_first #头指向新的第一个节点
打印(“成功冲销”)
elif select==6:
打印(“成功离开”)
破裂
else:
打印(“输入错误,请重试”)
部分运行结果:
这就是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。