python实现单链表,反转一个单链表 python
本文主要介绍在Python中实现双向链表的基本操作。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
双向链表基本操作的实现,供大家参考。具体情况如下
在之前的博客中介绍了三种链表,分别是单链表、单向循环链表和双向链表。本博客将使用Python实现双向链表的以下操作。(使用的工具是Python 3)
Is_empty() :确定链表是否为空。
Length() :返回链表的长度。
Travel() :遍历
Add(item) :在表头添加一个节点。
Append(item) :在末尾添加一个节点
在指定位置添加一个节点
删除一个节点
Search(item) :找出该节点是否存在。
Python实现
类节点(对象):
双向链表节点
def __init__(self,item):
self.item=项目
self.next=无
self.prev=无
class DoubleLink(object):
双向链表
def __init__(self):
自我。_head=无
定义为_空(自身):
确定它是否为空
回归自我。_head==无
定义长度(自身):
返回链表的长度
cur=self。_head
计数=0
一边诅咒!=无:
计数=1
下一个
返回计数
定义差旅(自助):
遍历链表
cur=self。_head
一边诅咒!=无:
打印(当前项目)
下一个
打印()
定义添加(自身,项目):
在标头处插入元素
节点=节点(项目)
if self.is_empty():
#如果是空链表,指向point _ head
自我。_head=node
else:
#将下一个节点指向_head的头节点
node.next=self。_head
#将_head的头节点的prev指向该节点
自我。_head.prev=node
#点到节点
自我。_head=node
定义附加(自身,项目):
在结尾插入元素
节点=节点(项目)
if self.is_empty():
自我。_head=node
else:
#移动到链接列表的末尾
cur=self。_head
下一个!=无:
下一个
#将尾节点cur的下一个指向该节点
cur.next=node
#当前节点的前一点
node.prev=cur
定义搜索(自身,项目):
找出该元素是否存在
cur=self。_head
一边诅咒!=无:
if cur.item==item:
返回True
下一个
返回False
指定位置插入节点
在这个操作中,要注意链指向的顺序。
定义插入(自身、位置、项目):
在指定位置添加节点
如果pos=0:
self.add(项目)
elif pos (self.length() - 1):
自我附加(项目)
else:
node=Node()
cur=self。_head()
计数=0
#移动到指定的上一个位置
而cur pos - 1 :
计数=1
下一个
#当前节点的前一点
node.prev=cur
#将下一个of节点指向下一个cur节点
node.next=cur.next
#将cur的下一个节点的prev指向该节点
cur.next.prev=node
#节点旁边的当前点
cur.next=node
删除元素
定义移除(自身,项目):
删除元素
如果self.is_empty():返回
else:
cur=self。_head
if cur.item==item:
#如果第一个节点的元素是要删除的元素
if cur.next==None:
#如果链表中只有一个节点
自我。_head=无
else:
cur.next.prev=无
自我。_head=cur.next
返回
一边诅咒!=无:
if cur.item==item:
cur.prev.next=cur.next
cur.next.prev=cur.prev
破裂
下一个
这就是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。