python数据结构与算法:单向循环列表
生活随笔
收集整理的這篇文章主要介紹了
python数据结构与算法:单向循环列表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
單向循環列表:python實現,及其對應的 增刪查檢 操作
##################### P4.9-P4.12 循環鏈表 ###########################
#coding:utf-8
class Node(object):def __init__(self,elem):self.elem = elemself.next = None
class SinglecycleList(object):"""SinglelinkList"""def __init__(self,node = None):#默認參數self.__head = nodeif node:node.next= nodedef is_empty(self):return self.__head == Nonedef travel(self):"""遍歷鏈表"""if self.is_empty():return Truecur = self.__headwhile cur.next != self.__head:# print(cur.elem, end=" ")cur= cur.nextprint(cur.elem)# print("")def length(self):"""length of list 遍歷 借助 Cursor 指針或者游標計數"""if self.is_empty():return 0cur = self.__head#cur游標 遍歷節點 不斷移動count = 1while cur!= self.__head:# cur.next = Nonecount+=1cur = cur.nextreturn countdef __add__(self, item):"""nedd to add node"""node = Node(item)cur = self.__headif self.is_empty():self.__head = nodenode.next = nodeelse:cur = self.__headwhile cur.next!=self.__head:cur =cur.nextnode.next = self.__headcur.next = nodedef append(self,item):node = Node(item) #node 實例化if self.is_empty():self._head = nodenode.next = nodeelse:cur = self.__headwhile cur.next != self.__head:cur = cur.nextnode.next = self.__headcur.next = nodedef insert(self,pos,item):""":param pos 從0 開始 """pre = self.__headcount = 0if pos<0:self.__add__(item)elif pos>(self.length()-1):self.append(item)else:while (count<(pos-1)):count+=1pre = pre.nextnode =Node(item)node.next = pre.nextpre.next = nodedef remove(self,item):if self.is_empty():returncur = self.__headpre = None#遍歷終止條件while cur!= self.__head:if cur.elem == item:#循環中找到要刪除的節點if cur == self.__head:#判斷是否是頭節點rear = self.__head #找到尾節點while rear.next != self.__head:rear = rear.nextrear.next=self.__headself.__head = cur.nextelse:#中間刪除pre.next = cur.nextreturnelse:pre = curcur = cur.next#退出循環,cur指向尾節點if cur.elem ==item:# 只有一個節點if cur == self.__head:self.__head = Noneelse:pre.next = cur.next#pre.next = self.__headdef search(self,item):if self.is_empty():return Falsecur = self.__headwhile cur!= self.__head:if cur.elem == item:return Trueelse:cur = cur.nextif cur.elem ==item:return Truereturn False
# single_obe = SinglelinkList()
if __name__ =="__main__":ll = SinglecycleList()print(ll.is_empty())print(ll.length())ll.append(1)print(ll.is_empty())print(ll.length())ll.append(2)ll.__add__(8)ll.append(3)ll.append(4)ll.append(5)ll.append(6)ll.insert(-1, 9)ll.insert(3, 100)ll.insert(8, 1234)ll.travel()
### 9 8 1 3 119 1 3 1234ll.remove(1234)ll.travel()
?
總結
以上是生活随笔為你收集整理的python数据结构与算法:单向循环列表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光遇办公室怎么放出冥龙?
- 下一篇: python数据结构与算法:二分查找