单向链表的反转 python,反转一个单链表 python

  单向链表的反转 python,反转一个单链表 python

  本文主要详细介绍了用python实现双向链表的原理。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  

双向链表

  更复杂的链表是“双向链表”或“双向链表”。每个节点有两个链接:一个指向前一个节点,当这个节点是第一个节点时,它指向一个空值;而另一个指向下一个节点,当这个节点是最后一个节点时,它指向一个空值。

  操作

  _empty()链表是空的吗?

  Length()链表长度

  Travel()遍历链表

  添加(项目)链表头

  添加到追加(项目)链表的末尾

  Insert(pos,item)指定要添加的位置

  删除(项目)删除节点。

  搜索(项目)以确定该节点是否存在。

  

实现

  类节点(对象):

  双向链表节点

  def __init__(self,item):

  self.item=项目

  self.next=无

  self.prev=无

  类数据链表(对象):

  双向链表

  def __init__(self):

  自我。__head=无

  定义为_空(自身):

  确定链表是否为空

  回归自我。__head==无

  定义长度(自身):

  返回链表的长度

  cur=self。_ _头

  计数=0

  一边诅咒!=无:

  计数=1

  下一个

  返回计数

  定义差旅(自助):

  遍历链表

  cur=self。_ _头

  一边诅咒!=无:

  打印当前项目,

  下一个

  打印

  定义添加(自身,项目):

  在标头处插入元素

  节点=节点(项目)

  if self.is_empty():

  #如果是空链表,指向_head节点

  自我。__head=节点

  else:

  #将下一个节点指向_head的头节点

  node.next=self。_ _头

  #将_head的头节点的prev指向该节点

  自我。__head.prev=node

  #点到节点

  自我。__head=节点

  定义附加(自身,项目):

  在结尾插入元素

  节点=节点(项目)

  if self.is_empty():

  #如果是空链表,指向_head节点

  自我。__head=节点

  else:

  #移动到链接列表的末尾

  cur=self。_ _头

  下一个!=无:

  下一个

  #将尾节点cur的下一个指向节点

  cur.next=node

  #当前节点的前一点

  node.prev=cur

  定义搜索(自身,项目):

  找出该元素是否存在

  cur=self。_ _头

  一边诅咒!=无:

  if cur.item==item:

  返回True

  下一个

  返回False

  指定位置插入节点

  定义插入(自身、位置、项目):

  在指定位置添加节点

  如果pos=0:

  self.add(项目)

  elif pos (self.length()-1):

  自我附加(项目)

  else:

  节点=节点(项目)

  cur=self。_ _头

  计数=0

  #移动到指定位置的前一个位置

  同时计数(位置1):

  计数=1

  下一个

  #当前节点的前一点

  node.prev=cur

  #将下一个of节点指向下一个cur节点

  node.next=cur.next

  #将cur的下一个节点的prev指向该节点

  cur.next.prev=node

  #节点旁的点曲线

  cur.next=node

  删除元素

  定义移除(自身,项目):

  删除元素

  cur=self。_ _头

  一边诅咒!=无:

  #找到要删除的元素。

  if cur.item==item:

  #首先确定这个节点是否是头节点。

  #头节点

  if cur==self。__head:

  自我。__head=cur.next

  #如果下一个节点存在,则设置下一个节点

  if cur.next:

  #确定链表是否只有一个节点。

  cur.next.prev=无

  else:

  cur.prev.next=cur.next

  #如果下一个节点存在,则设置下一个节点

  if cur.next:

  cur.next.prev=cur.prev

  破裂

  else:

  下一个

  测试

  if __name__==__main__:

  ll=DLinkList()

  ll.add(1)

  ll.add(2)

  ll.append(3)

  ll.insert(2,4)

  ll.insert(4,5)

  ll.insert(0,6)

  打印“长度:”,ll.length()

  ll.travel()

  打印ll.search(3)

  打印ll.search(4)

  ll.remove(1)

  打印“长度:”,ll.length()

  ll.travel()

  这就是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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