




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Python實(shí)現(xiàn)雙向鏈表基本操作雙向鏈表的基本操作的實(shí)現(xiàn),供大家參考,具體內(nèi)容如下
在之前的博客中介紹了三種鏈表,分別是單鏈表、單向循環(huán)鏈表以及雙向鏈表。本篇博客將用Python來實(shí)現(xiàn)雙向鏈表的如下操作。(用到的工具是Python3)
is_empty():判斷鏈表是否為空
length():返回鏈表的長(zhǎng)度
travel():遍歷
add(item):在頭部添加一個(gè)節(jié)點(diǎn)
append(item):在尾部添加一個(gè)節(jié)點(diǎn)
insert(pos,item):在指定位置pos添加一個(gè)節(jié)點(diǎn)
remove(item):刪除一個(gè)節(jié)點(diǎn)
search(item):查找節(jié)點(diǎn)是否存在
Python實(shí)現(xiàn)
classNode(object):
'''雙向鏈表節(jié)點(diǎn)'''
def__init__(self,item):
self.item=item
self.next=None
self.prev=None
classDoubleLink(object):
'''雙向鏈表'''
def__init__(self):
self._head=None
defis_empty(self):
'''判斷是否為空'''
returnself._head==None
deflength(self):
'''返回鏈表的長(zhǎng)度'''
cur=self._head
count=0
whilecur!=None:
count+=1
cur=cur.next
returncount
deftravel(self):
'''遍歷鏈表'''
cur=self._head
whilecur!=None:
print(cur.item)
cur=cur.next
print("")
defadd(self,item):
'''頭部插入元素'''
node=Node(item)
ifself.is_empty():
#如果是空鏈表,將_head指向None
self._head=node
else:
#將node的next指向_head的頭節(jié)點(diǎn)
node.next=self._head
#將_head的頭節(jié)點(diǎn)的prev指向node
self._head.prev=node
#將_head指向node
self._head=node
defappend(self,item):
'''尾部插入元素'''
node=Node(item)
ifself.is_empty():
self._head=node
else:
#移動(dòng)到鏈表尾部
cur=self._head
whilecur.next!=None:
cur=cur.next
#將尾結(jié)點(diǎn)cur的next指向node
cur.next=node
#將node的prev指向cur
node.prev=cur
defsearch(self,item):
'''查找元素是否存在'''
cur=self._head
whilecur!=None:
ifcur.item==item:
returnTrue
cur=cur.next
returnFalse
指定位置插入節(jié)點(diǎn)
在該操作中,要注意鏈的指向的先后順序。
definsert(self,pos,item):
'''在指定位置添加節(jié)點(diǎn)'''
ifpos=0:
self.add(item)
elifpos(self.length()-1):
self.append(item)
else:
node=Node()
cur=self._head()
count=0
#移動(dòng)到指定的前一個(gè)位置
whilecurpos-1:
count+=1
cur=cur.next
#將node的prev指向cur
node.prev=cur
#將node的next指向cur的下一個(gè)節(jié)點(diǎn)
node.next=cur.next
#將cur的下一個(gè)節(jié)點(diǎn)的prev指向node
cur.next.prev=node
#將cur.next指向node
cur.next=node
刪除元素
defremove(self,item):
'''刪除元素'''
ifself.is_empty():return
else:
cur=self._head
ifcur.item==item:
#如果首節(jié)點(diǎn)的元素是要?jiǎng)h除的元素
ifcur.next==None:
#如果鏈表中只有一個(gè)節(jié)點(diǎn)
self._head=None
else:
cur.next.prev=None
self._head=cur.next
return
whilecur!=None:
ifcur.item==item:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 加強(qiáng)校園餐飲安全管理的策略與實(shí)施路徑
- 低空經(jīng)濟(jì)公司成立前景分析報(bào)告
- 2024年房地產(chǎn)開發(fā)經(jīng)營(yíng)服務(wù)項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 專賣合同協(xié)議書
- 出租車大包合同協(xié)議書
- 學(xué)徒合同 協(xié)議書
- 文員就業(yè)合同協(xié)議書范本
- 代理協(xié)議書是委托合同嘛
- 行業(yè)法規(guī)與行業(yè)標(biāo)準(zhǔn)試題及答案
- 合同變更委托協(xié)議書
- 中國(guó)精神課件
- 2025年福建福州市電子信息集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 天津市和平區(qū)二十中學(xué)2025屆學(xué)業(yè)水平考試化學(xué)試題模擬卷(九)含解析
- 2025屆河北省“五個(gè)一”名校聯(lián)盟高三下學(xué)期4月聯(lián)考地理試題(含答案)
- 揚(yáng)州大學(xué)《水工程施工》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省常州第一中學(xué)2025屆高三下學(xué)期聯(lián)合考試語(yǔ)文試題含解析
- 《隋唐時(shí)期的中外文化交流》教案-2024-2025學(xué)年統(tǒng)編版(2024)初中歷史七年級(jí)下冊(cè)
- 2025年初級(jí)社會(huì)工作者綜合能力理論考試題(附答案)
- 醫(yī)院培訓(xùn)課件:《人文關(guān)懷與人文護(hù)理》
- 第三屆南華大學(xué)醫(yī)學(xué)生臨床技能競(jìng)賽評(píng)分標(biāo)準(zhǔn)高處
- 民用航空器駕駛員學(xué)校合格審定規(guī)則(完整版)
評(píng)論
0/150
提交評(píng)論