中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

python怎么實現(xiàn)單向鏈表

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

淮上ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

什么是鏈表

鏈表顧名思義是~鏈

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

鏈表與數(shù)組的不同點:

陣列需要預(yù)定義的大小,無法適應(yīng)數(shù)據(jù)的動態(tài)增減。如果數(shù)據(jù)小于定義的長度,將會浪費內(nèi)存。如果數(shù)據(jù)超過預(yù)定義的長度,則無法插入。鏈表是動態(tài)添加和刪除的數(shù)據(jù),可以隨意添加。

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

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

鏈表基本方法實現(xiàn)(Python)

1. 初始化鏈表

'''節(jié)點類' ' '

類別節(jié)點(對象):

def__init__(self,data):

self.data=數(shù)據(jù)

self.nex=無

def__init__(self):

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

self  . head=None

2. 獲取鏈表長度

def  _ _ len  _ _(self):

pre=self.head

長度=0

while  prep  :

長度=1

pre=pre.nex

返回長度

3. 追加節(jié)點

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

python怎么實現(xiàn)單向鏈表

''追加節(jié)點'''

defappend(自身,數(shù)據(jù)):

'''

1.頭是none  :頭節(jié)點

2.tail.nex  - node

:paramdata:

:return:

'''

節(jié)點=節(jié)點(數(shù)據(jù))

ifself.headisNone:

self.head=node

else:

pre=self.head

whilepre.nex:

pre=pre.nex

Pre.nex=node

4. 獲取節(jié)點

獲取節(jié)點也相對容易,無非是判斷指標(biāo)值的正負(fù)

defget(自身,索引):

'''

:paramindex:

:return:

'''

index=indexifindex=0 elselen(self)索引

iflen(self)indexorindex0:

返回?zé)o

pre=self.head

whileindex:

pre=pre.nex

index-=1

Returnpre

5. 設(shè)置節(jié)點

查找當(dāng)前節(jié)點并分配它

''設(shè)置節(jié)點'''

defset(自身、索引、數(shù)據(jù)):

node=self.get(index)

ifnode:

node.data=數(shù)據(jù)

Returnnode

6. 插入節(jié)點

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

python怎么實現(xiàn)單向鏈表

''插入節(jié)點'''

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

'''

1.1 .索引插入節(jié)點位置包括正數(shù)和負(fù)數(shù)

2.查找索引

-1-->pre_node的節(jié)點 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. 刪除節(jié)點

刪除節(jié)點,也要區(qū)分一下索引的正負(fù)。找到當(dāng)前節(jié)點的前一個節(jié)點pre_node和后一個節(jié)點next_node,將pre_node.nex–>next_node即可

python怎么實現(xiàn)單向鏈表

"""刪除某個元素"""
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. 反轉(zhuǎn)鏈表

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

python怎么實現(xiàn)單向鏈表

"""反轉(zhuǎn)鏈表"""
def__reversed__(self):
"""
1.pre-->next轉(zhuǎn)變?yōu)閚ext-->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

到此,關(guān)于“python怎么實現(xiàn)單向鏈表”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

網(wǎng)站標(biāo)題:python怎么實現(xiàn)單向鏈表
本文網(wǎng)址:http://www.rwnh.cn/article36/ghcisg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、響應(yīng)式網(wǎng)站、用戶體驗、標(biāo)簽優(yōu)化、品牌網(wǎng)站設(shè)計、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
应城市| 淮南市| 青岛市| 江口县| 平遥县| 乌海市| 大庆市| 台江县| 资阳市| 许昌市| 东丰县| 客服| 犍为县| 南岸区| 合江县| 胶南市| 龙泉市| 扎囊县| 搜索| 广昌县| 孝昌县| 宁乡县| 温州市| 邵东县| 昌平区| 黔江区| 绥滨县| 安龙县| 陈巴尔虎旗| 米易县| 丰原市| 京山县| 太保市| 扬中市| 江油市| 怀宁县| 桓台县| 淮安市| 兰坪| 勐海县| 元江|