python实现双向链表,python循环单链表的基本操作

  python实现双向链表,python循环单链表的基本操作

  大家好,本文主要讲一下单向链表在python中的实现。有兴趣的同学过来看看,如果对你有帮助记得收藏。

  00-1010 1.单向链表概念2。建立节点对象3。链表对象4的初始定义。判断链表是否为空5。获取链表长度6。头加节点7,尾加节点8,指定位置插入节点9,指定位置删除节点10,用数据搜索节点11,遍历输出整个链表12,输入数据创建链表13。具体实施。

  

目录

  单向链表的链接方向是单向的,由节点组成。头指针指向成为头节点的第一个节点,并在指向None的最后一个指针处结束。对链表的访问从头开始,通过顺序读取。

  

一、单向链表概念

  类别节点:

  def __init__(self,data):

  self.data=data # node的取值范围

  Self.next=None #连接下一个节点,暂时指向null。

  

二、建立节点对象

  类别链接列表:

  def __init__(self):

  Self.head=None #首先建立链表头,临时指向空。

  

三、链表对象的初始定义

  #确定链表是否为空。

  def isEmpty(self):

  if self.head:

  返回False

  else:

  返回True

  

四、判断链表是否为空

  定义长度(自身):

  if self.isEmpty():

  返回0

  else:

  t=self.head

  n=1

  而t.next:

  下一个

  n=n 1

  返回

  

五、获取链表长度

  def addhead(self,data):

  Node=Node(data) #创建一个新节点

  Node.next=self.head #新创建的节点连接到原来的链表。

  Self.head=node #重置链表的头

  

六、向头部添加节点

  def addtail(自身,数据):

  Node=Node(data) #创建一个新节点

  #首先确定链表是否为空。

  if self.isEmpty():

  self.addhead(数据)

  else:

  t=self.head

  而t.next: #通过循环找到尾部

  下一个

  T.next=节点#尾部已连接

  

七、向尾部添加节点

  定义插入(自身,数据,索引):

  if index==0或self.isEmpty():

  self.addhead(数据)

  elif index=self.length():

  self.addtail(数据)

  else:

  节点=

   Node(data)

   t = self.head

   n = 1

   while n < index - 1:

   t = t.next

   n = n + 1

   a = t.next.next

   t.next = node

   node.next = a

  

  

九、删除指定位置的节点

  

 def delete(self,index):

   if self.isEmpty():

   print("The linked list is empty")

   else:

   t = self.head

   if index == 0:

   self.head = t.next

   elif index == self.length() - 1:

   n = 1

   while n < self.length() - 1:

   t = t.next

   n = n + 1

   t.next = None

   elif index > self.length() - 1:

   print("Out of range")

   elif index < 0:

   print("Wrong operation")

   else:

   n = 1

   while n < index - 1:

   t = t.next

   n = n + 1

   a = t.next.next

   t.next = a

  

  

十、查找是否有该数据的节点

  

 def search(self,data):

   t = self.head

   n = 1

   while t.next:

   if t.data == data:

   print(str(n) + " ")

   t = t.next

   n = n + 1

   if (t.data == data):

   print(str(n) + " ")

  

  

十一、遍历输出整个链表

  

 def form(self,datalist):

   self.addhead(datalist[0])

   for i in range(1,len(datalist)):

   self.addtail(datalist[i])

   t = self.head

   while t.next:

   print(t.data)

   t = t.next

   print(t.data)

  

  

十二、输入数据创建链表

  

 def form(self,datalist):

   self.addhead(datalist[0])

   for i in range(1,len(datalist)):

   self.addtail(datalist[i])

   t = self.head

   while t.next:

   print(t.data)

   t = t.next

   print(t.data)

  

  

十三、具体实现

  

data = input("input(以空格为界):")

  data = data.split(" ")

  linkList = linkList()

  linkList.form(data) #创建链表

  addlist = linkList.addhead(5) #在头节点加入

  linkList.ergodic() #遍历输出

  addlist = linkList.addtail(5) #在尾节点加入

  linkList.ergodic() #遍历输出

  linkList.search(5) #查找是否有"5"的节点

  linkList.delete(4) #删除第4个数据

  linkList.ergodic() #遍历输出

  print(linkList.length()) #输出链表长度

  linkList.insert(89,2) #指定位置插入数据

  linkList.ergodic() #遍历输出

  到此这篇关于python中的单向链表实现的文章就介绍到这了,更多相关python单向链表内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

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

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