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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python链表删除尾部节点_python单链表中如何查找和删除节点?

發(fā)布時(shí)間:2024/10/6 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python链表删除尾部节点_python单链表中如何查找和删除节点? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在之前的文章【python單鏈表中如何插入和輸出節(jié)點(diǎn)?】中給大家介紹了單鏈表是什么,以及如何進(jìn)行添加節(jié)點(diǎn)、輸出所以節(jié)點(diǎn)。下面本篇文章給大家介紹如何查找和刪除節(jié)點(diǎn),希望對(duì)大家有所幫助。

如何從單鏈表中查找節(jié)點(diǎn)?

與大多數(shù)數(shù)據(jù)結(jié)構(gòu)一樣,查找元素是否存在的唯一方法是遍歷整個(gè)鏈表。請(qǐng)注意,如果鏈接列表已排序,我們可以使用二進(jìn)制搜索。但是在這里我們將考慮一個(gè)未排序的鏈表。

工作原理:用戶(hù)給定需要查找的節(jié)點(diǎn)元素,如果我們找到元素,我們返回true,否則返回false;還可以使用計(jì)數(shù)器并返回元素的索引(如果存在)。

算法

1、將指針curr設(shè)置為頭部

2、將curr.data與輸入值進(jìn)行比較:

● 如果相等,則返回True

● 否則,轉(zhuǎn)到下一個(gè)指針

3、重復(fù)步驟1-2,直到找到元素或滿(mǎn)足鏈接列表的結(jié)尾

實(shí)現(xiàn)代碼:def findNode(self,value):

curr = self.head

while curr:

if curr.getData() == value:

return True

curr = curr.getNextNode()

return False

如何從單鏈表中刪除節(jié)點(diǎn)?

從上面的示例中我們知道了如何查找節(jié)點(diǎn),那么我們可以利用它來(lái)刪除節(jié)點(diǎn)。我們可以從用戶(hù)那里獲取一個(gè)值,在鏈接列表中找到該元素,如果它存在,就將其刪除。

注:讓用戶(hù)知道元素是否被成功刪除是非常重要的。因而,當(dāng)刪除成功就返回True,否則返回False;請(qǐng)記住將size屬性減1。

讓我們將要?jiǎng)h除的節(jié)點(diǎn)稱(chēng)為當(dāng)前節(jié)點(diǎn)。其思想是將前一個(gè)節(jié)點(diǎn)的next鏈接到當(dāng)前節(jié)點(diǎn)的next節(jié)點(diǎn)。例如,假設(shè)我們要從給定的鏈接列表中刪除4:原鏈表: H-->3-->4-->5

刪除4后:H-->3-->5

我們需要將3的下一個(gè)節(jié)點(diǎn)指向4的下一個(gè)節(jié)點(diǎn),即5。

假設(shè)我們還要?jiǎng)h除3刪除3后:H-->5

注:要在上一個(gè)節(jié)點(diǎn)和當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)之間建立連接,請(qǐng)務(wù)必跟蹤上一個(gè)節(jié)點(diǎn)。

算法

1、有兩個(gè)指針:

● CURR - 最初 分給頭

● prev - 最初指向無(wú)

2、如果輸入的值與curr的數(shù)據(jù)匹配,檢查prev存在:

● 如果是,則將prev的下一個(gè)節(jié)點(diǎn)設(shè)置為curr的下一個(gè)節(jié)點(diǎn)

● 如果不是,只需將頭部指向curr的下一個(gè)節(jié)點(diǎn)(當(dāng)您要?jiǎng)h除第一個(gè)節(jié)點(diǎn)時(shí)會(huì)發(fā)生這種情況)

● 將size屬性減1

● 返回True

3、如果輸入的值與curr的數(shù)據(jù)不匹配,通過(guò)以下方式前往下一個(gè)節(jié)點(diǎn):

● 指向先前的曲線

● 指著CURR到下一個(gè)節(jié)點(diǎn)CURR

4、重復(fù)步驟1-3直到鏈表結(jié)束

5、如果到達(dá)鏈接列表的末尾,則返回False,表示鏈接列表中沒(méi)有元素與輸入的值匹配

實(shí)現(xiàn)代碼:def removeNode(self,value):

prev = None

curr = self.head

while curr:

if curr.getData() == value:

if prev:

prev.setNextNode(curr.getNextNode())

else:

self.head = curr.getNextNode()

return True

prev = curr

curr = curr.getNextNode()

return False

相關(guān)視頻教程推薦:《python3教程》

以上就是本篇文章的全部?jī)?nèi)容,希望能對(duì)大家的學(xué)習(xí)有所幫助。更多精彩內(nèi)容大家可以關(guān)注Gxl網(wǎng)相關(guān)教程欄目!!!

總結(jié)

以上是生活随笔為你收集整理的python链表删除尾部节点_python单链表中如何查找和删除节点?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。