91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現單向鏈表

發布時間:2022-05-09 10:38:22 來源:億速云 閱讀:147 作者:iii 欄目:大數據

這篇文章主要介紹“python怎么實現單向鏈表”,在日常操作中,相信很多人在python怎么實現單向鏈表問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python怎么實現單向鏈表”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是鏈表

鏈表顧名思義是~鏈

鏈表是一種動態數據結構,其特點是使用一組任意的存儲單元來存儲數據元素。鏈表中的每個元素都成為一個“節點”,每個節點由一個數據字段和一個指針字段組成。與數組不同,鏈表不必預先定義大小,如果有硬件支持,它們可以無限擴展。

鏈表與數組的不同點:

陣列需要預定義的大小,無法適應數據的動態增減。如果數據小于定義的長度,將會浪費內存。如果數據超過預定義的長度,則無法插入。鏈表是動態添加和刪除的數據,可以隨意添加。

數組適合獲取元素的操作,可以直接獲取索引。鏈表獲取元素比較麻煩,需要一直找。但是它們適合添加和刪除,所以可以直接修改節點的指向。但是數組比較麻煩。例如,[1,2,3,4]需要在下標1處插入-2,所以需要將[2,3,4]移回并賦值LS  [1]=

數組從棧中分配空間,對于程序員來說方便快捷,但是自由度很小。鏈表從堆中分配空間,自由度大,但是應用管理麻煩。

鏈表基本方法實現(Python)

1. 初始化鏈表

'''節點類' ' '

類別節點(對象):

def__init__(self,data):

self.data=數據

self.nex=無

def__init__(self):

''初始化鏈接列表'''

self  . head=None

2. 獲取鏈表長度

def  _ _ len  _ _(self):

pre=self.head

長度=0

while  prep  :

長度=1

pre=pre.nex

返回長度

3. 追加節點

添加節點相對簡單。如果頭節點不存在,則當前節點為頭節點,否則,查找尾節點,并將尾節點的下一個指向當前節點(可以添加頭和尾兩個節點,不必遞歸查找尾節點)

python怎么實現單向鏈表

''追加節點'''

defappend(自身,數據):

'''

1.頭是none  :頭節點

2.tail.nex  - node

:paramdata:

:return:

'''

節點=節點(數據)

ifself.headisNone:

self.head=node

else:

pre=self.head

whilepre.nex:

pre=pre.nex

Pre.nex=node

4. 獲取節點

獲取節點也相對容易,無非是判斷指標值的正負

defget(自身,索引):

'''

:paramindex:

:return:

'''

index=indexifindex=0 elselen(self)索引

iflen(self)indexorindex0:

返回無

pre=self.head

whileindex:

pre=pre.nex

index-=1

Returnpre

5. 設置節點

查找當前節點并分配它

''設置節點'''

defset(自身、索引、數據):

node=self.get(index)

ifnode:

node.data=數據

Returnnode

6. 插入節點

要插入一個節點,需要找到前一個節點pre_node(索引索引為正或負,前一個節點不同,需要判斷),然后將pre_node.nex指向當前節點。同時,將當前節點的nex指向pre_node.nex.nex

python怎么實現單向鏈表

''插入節點'''

定義插入(自身、索引、數據):

'''

1.1 .索引插入節點位置包括正數和負數

2.查找索引

-1-->pre_node的節點 3.pre_node.next-->node node.next-->pre_node.next.next 4.head :paramindex: :paramdata: :return: """ node=Node(data) ifabs(index+1)>len(self): returnFalse index=indexifindex>=0elselen(self)+index+1 ifindex==0: node.nex=self.head self.head=node else: pre=self.get(index-1) ifpre: nex=pre.nex pre.nex=node node.nex=nex else: returnFalse returnnode

7. 刪除節點

刪除節點,也要區分一下索引的正負。找到當前節點的前一個節點pre_node和后一個節點next_node,將pre_node.nex–>next_node即可

python怎么實現單向鏈表

"""刪除某個元素"""
defdelete(self,index):
f=indexifindex>0elseabs(index+1)
iflen(self)<=f:
returnFalse
pre=self.head
index=indexifindex>=0elselen(self)+index
prep=None
whileindex:
prep=pre
pre=pre.nex
index-=1
ifnotprep:
self.head=pre.nex
else:
prep.nex=pre.nex
returnpre.data

8. 反轉鏈表

反轉鏈表的實現有多種方式,比較簡單的就是生成一個新的鏈表--》可以用數組存儲所有節點讓后倒序生成新的鏈表
在這里用下面這種方式生產:
反轉鏈表就是將node.nex–>pre_node 遞歸實現即可,然后讓tail賦值為head

python怎么實現單向鏈表

"""反轉鏈表"""
def__reversed__(self):
"""
1.pre-->next轉變為next-->pre
2.pre若是head則把pre.nex-->None
3.tail-->self.head
:return:
"""
defreverse(pre_node,node):
ifpre_nodeisself.head:
pre_node.nex=None
ifnode:
next_node=node.nex
node.nex=pre_node
returnreverse(node,next_node)
else:
self.head=pre_node
returnreverse(self.head,self.head.nex)

9. 清空鏈表

將頭賦為空就好

"""清空鏈表"""
defclear(self):
self.head=None

到此,關于“python怎么實現單向鏈表”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂尔多斯市| 永宁县| 区。| 浙江省| 凤冈县| 双鸭山市| 建始县| 连城县| 礼泉县| 若尔盖县| 宜州市| 湘阴县| 抚远县| 和林格尔县| 黑龙江省| 长沙县| 敖汉旗| 双柏县| 襄城县| 保德县| 安阳县| 抚顺县| 延安市| 平阳县| 麻栗坡县| 新宾| 灌南县| 宁乡县| 名山县| 黄浦区| 兰溪市| 六安市| 民县| 江源县| 庆元县| 浦江县| 通州市| 即墨市| 曲阳县| 陇南市| 安阳县|