怎么用Python实现单向链表
这篇文章主要介绍“怎么用Python实现单向链表”,在日常操作中,相信很多人在怎么用Python实现单向链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python实现单向链表”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
单向链表每个节点都是由两部分组成:数据字段和指针,指针指向下一个元素在内存中的位置。
单向链表的第一个节点节点是链表头指针,而最后一个节点的指针设为None,不指向任何元素。(链表头指针相当重要!!!)
使用Python实现单向链表,我们可以使用一个节点类来封装节点,每创建一个节点就生成一个节点类的实例。
这里主要实现了单向链表节点的遍历、添加、插入、删除,反转。
代码如下:
classPlayer:"""节点类"""def__init__(self):"""初始化姓名,分数,指针"""self.name=''self.score=0self.next=Nonedefergodic(head,num=None,is_print=False):"""遍历函数,num是遍历到哪一个位置序号,is_print是否触发打印方法"""ptr=headcount=0whileTrue:ifnum==count:breakifptr.next:count+=1ptr=ptr.nextifis_print:print('No.'+str(count),ptr.name,ptr.score,'--->',ptr.next.nameifptr.nextelseNone)else:breakreturnptr#返回遍历完成后的最后一个节点definvert(x):#x是链表的第一个节点(即head的指针的指向)"""反转链表"""y=x.next#y是x原来的nextifyisNone:#y等于None表示当前链表只有一个节点returnxx.next=None#将第一个节点的next指向None(因为反转了)whileTrue:#循环反转后面的所有节点r=y.nexty.next=xifrisNone:#r是None说明y已经是原本链表的最后一个节点了returny#返回y,这个y是反转后的链表的第一个节点x=yy=rhead=Player()whileTrue:select=input("(1).新增(2).查看(3).插入(4).删除(5).反转(6).离开\n输入:")ifselect=="1":#新增节点ptr=ergodic(head)#获取当前链表最后一个节点next_data=Player()#创建一个新节点next_data.name=input("姓名:")next_data.score=input("分数:")next_data.next=Noneptr.next=next_data#连接节点elifselect=="2":#遍历查看链表所有节点print("所有数据显示如下:")ergodic(head,is_print=True)#遍历链表,将打印参数设为Trueelifselect=='3':#向链表中任意位置插入节点,位置以序号表示,即第一个节点序号为1,第二个节点序号为2,以此类推try:num=int(input("请输入需要插入的节点位置序号:"))#输入序号必须是大于0的正整数,如果输入大于最后一个节点的序号则插入到最后一个节点之后ifnum<1:print("输入必须为大于0的正整数")continueexceptValueError:print("输入有误")continueptr=ergodic(head,num-1)#获取需要插入位置的前一个节点insert_data=Player()insert_data.name=input("姓名:")insert_data.score=input("分数:")insert_data.next=ptr.nextptr.next=insert_dataelifselect=='4':#删除链表中任意位置的节点try:num=int(input("请输入需要删除的节点位置序号:"))#输入序号必须是大于0的正整数,如果输入大于最后一个节点的序号则删除最后一个节点ifnum<1:print("输入必须为大于0的正整数")continueexceptValueError:print("输入有误")continueptr=ergodic(head,num-1)#获取需要删除位置的前一个节点ptr.next=ptr.next.nextelifselect=='5':#反转链表new_first=invert(head.next)#获取新的第一个节点head.next=new_first#head指向新的第一个节点print('成功反转')elifselect=='6':print("成功离开")breakelse:print("输入错误,请重试")
部分运行结果:
到此,关于“怎么用Python实现单向链表”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注主机评测网网站,小编会继续努力为大家带来更多实用的文章!
输入法切换键是哪个键?输入法切
冬月是哪一个月?冬月是什么意思
个人所得税退税金额怎么算出来的
输入法全角和半角有什么区别?输
a4纸尺寸是多少厘米?a4纸的由来
个人所得税扣除标准?个人所得税
输入法哪个好用?输入法介绍
卡拉OK是哪个国家发明的?卡拉OK
mikutools原神网页版入口链接?m
关机特别慢什么原因?电脑和手机