本文实例讲述了Python单向链表和双向链表原理与用法。分享给大家供大家参考,具体如下:
链表是一种数据结构,链表在循环遍历的时候效率不高,但是在插入和删除时优势比较大。
链表由一个个节点组成。
单向链表的节点分为两个部分:存储的对象和对下一个节点的引用。注意是指向下一个节点。
而双向链表区别于单向链表的是它是由三个部分组成:存储的对象,对下一个节点的引用,对上一个节点的引用,可以实现双向遍历。
<强>单向列表的结构如下图:强>
头是头节点,尾巴是尾节点,每个节点由数据存储对象和未来对下一个节点引用组成
下面说一下单向链表插入和删除的过程。
<>强插入一个新节点:强>
原理:前一个节点的下一指向当前新节点,新节点的下一指向要插入节点位置的后一个节点。
注意:在实际应用时需要考虑插入位置是头结点和尾节点的情况。
<>强删除一个节点:强>
原理:找到要删除节点的上一个节点,直接上一个节点的下一指向删除位置的下一个节点。
注意:在实际应用中需要考虑到删除的节点是否是头节点或尾节点,需要考虑到链表的长度。
类节点: 下一个=没有 data=https://www.yisu.com/zixun/None def __init__(自我,nodeData): 自我。data=nodeData 类列表: 头=没有 大?0 def __init__(自我): 自我。大?0 自我。头=没有 #遍历链表 def(自我): print (“avx”) def printlist(自我): p=self.head 虽然(p不是没有): 打印(p.data) p=p.next 打印(“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -”) newdata def insertlink(自我): newnode=节点(newdata) 如果自我。大?=0: 打印(“链接”) 自我。头=newnode 自我。大?self.size + 1 其他: p=self.head 虽然(p不是没有)和(p。数据!=): p=p.next 如果p。下一个是没有: p。下一个=newnode 自我。大?自我。大小+ 1 其他: newnode。下一个=p.next p。下一个=newnode 自我。大?自我。大小+ 1 #删除链表中的节点 def deldata(自我): 如果自我。大?=0: 打印(“链接”) elif自我。大?=1: 自我。头=没有 自我。大?自我。尺寸1 其他: p=self.head 虽然(p不是没有)和(p。数据!=): q=p p=p.next 如果p是没有: print(找不到) elif p==self.head: 自我。头=p.next elif p。data=https://www.yisu.com/zixun/=a和p。下不是没有: q。下一个=q.next.next 自我。大?自我。大小- 1 其他: q。下一个=没有 自我。大?自我。大小- 1 #修改链表中的指定节点 def updatelink(自我,a, b): p=self.head 打印(p.data) 虽然(p不是没有)和(p.data !=): p=p.next 如果p是没有: print(找不到) 其他: p。data=https://www.yisu.com/zixun/b if __name__==癬_main__”: p=列表() p.insertlink (1, 1) p.insertlink (1、2) p.insertlink (1、3) p.insertlink (1、4) 打印(“_________________________——-insertlink”) p.printlist () 打印(“_________________________——chalink”) p.updatelink (2、5) p.printlist () print (“___________________________——-dellink”) p.deldata (5) p.printlist () >之前运行结果:
没有链接
_________________________——-insertlink
1
4
3
2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_________________________——chalink
1
1
4
3
5
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Python单向链表和双向链表原理与用法实例详解