Python实现单链表,python单链表的基本操作

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: