日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python数据结构与算法:单向循环列表

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据结构与算法:单向循环列表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。