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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【python】关于python的链表结构实现

發布時間:2025/7/14 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python】关于python的链表结构实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【參考】

【https://blog.csdn.net/weixin_37728031/article/details/81145258】【注意鏈表結構,節點包括數值和next、鏈表中的head】

【https://www.cnblogs.com/yudanqu/p/9172459.html】【鏈表的類的實現】【* 畫一下圖有助于理解節點和鏈表】

【https://www.cnblogs.com/linxiyue/p/3551633.html】【Node和單鏈表】

【https://blog.csdn.net/su_bao/article/details/81065746】【一些鏈表的操作】

【https://www.cnblogs.com/yudanqu/p/9172459.html】【鏈表的構建+鏈表的實例化(main)】

?

【實踐】

?

# -*- coding:UTF-8 -*-class Node():def __init__(self, item):self._item=itemself._next=Nonedef getItem(self):return self._itemdef getNext(self):return self._nextdef setItem(self, newitem):self._item=newitemdef setNext(self, newnext):self._next=newnextclass SingleLinkedList():def __init__(self):self._head=Noneself._size=0# 檢測鏈表是否是空的def isEmpty(self):return self._head==Nonedef size(self):current=self._headcount=0while current!=None: # 這處的判斷不可以是current.getNext()!=None 因為最后一個節點雖然指向為None,但他的val值存在,該節點需要計入size長度count+=1current=current.getNext()return countdef travel(self):current=self._headwhile current!=None: # 這處的判斷不可以是current.getNext()!=None 因為最后一個節點雖然指向為None,但他的val值是需要打印的print current.getItem(), '=>' # print current.getNext(), '=>' # 打印出來的是內存地址current=current.getNext()# add方法,在鏈表前段添加節點元素def add(self, item):temp=Node(item)temp.setNext(self._head) # self下的是鏈表當前頭節點,temp是要新加的節點;self._head目前指向的是當前節點,并把指向賦給temp的next指針,則temp的next指針指向當前節點;self._head=temp # 把當前鏈表的head指針指向新的節點,即temp這個點# append方法,在鏈表尾部添加節點元素def append(self, item):temp=Node(item)if self.isEmpty():self._head=temp # 若鏈表是空的,則將頭節點指向要添加的元素else:current=self._head # 此刻current是一個具體節點,self指的是鏈表while current.getNext()!=None:current=current.getNext()current.setNext(temp)# search方法,用來檢測某節點元素是否在鏈表中def search(self, item):current=self._headfounditem = Falsewhile current!=None and not founditem:if current.getItem()==item:founditem=Trueelse:current=current.getNext()return founditem# index方法,用來索引節點元素在鏈表中的位置def index(self,item):current=self._headcount=0found=Falsewhile current!=None and not found:count+=1 # count+=1 和 count++ 一致性if current.getItem()==item:found=Trueelse:current=current.getNext()if found:return countelse:raise ValueError, '%d is not in linkedlist' %item # raise方法的用處,print里 % 與 {} 的占位作用區別是?{}好像是帶格式輸出# remove方法,刪除鏈表中的某個元素節點def remove(self,item):current=self._headpre=Nonewhile current!=None:if current.getItem()==item:if not pre: # if pre 代表在問pre是不是真的;if not pre 在問pre是不是假的;self._head=current.getNext()else:pre.setNext(current.getNext())break # break語句用在while和for循環中,此處打破了所在的while循環else:pre=currentcurrent=current.getNext()# insert方法,在鏈表中指定位置插入節點元素def insert(self,pos,item):if pos<=1:self.add(item)elif pos>self.size():self.append(item)else:temp = Node(item)current = self._headcount = 1pre = Nonewhile count < pos:pre = currentcurrent = current.getNext()count += 1pre.setNext(temp)temp.setNext(current)if __name__=="__main__":l1=SingleLinkedList()print (l1.isEmpty())print '======0======='l1.append(3)l1.add(999)print (l1.isEmpty())print 'size is :', l1.size()l1.travel()print '======1======='l1.insert(-3,110)print 'size is :', l1.size()l1.travel()print '======2======='l1.insert(99, 111) #雖然要求insert位置是99,但實際上插在最后一個節點,即第4個print 'size is :', l1.size()l1.travel()print '======3======='l1.insert(90, 10) # 雖然要求insert位置是90,但實際上當前90位不存在,所以插在當前最后一個節點,即第5個print 'size is :', l1.size()print 'Value %d index is :'% 999, l1.index(999)l1.travel()print '======4======='l1.remove(111)print 'size is :', l1.size()l1.travel()

?

?

?

?

?

?

?

?

【補充】

?

轉載于:https://www.cnblogs.com/anno-ymy/p/11125969.html

總結

以上是生活随笔為你收集整理的【python】关于python的链表结构实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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