python链表删除尾部节点_python单链表中如何查找和删除节点?
在之前的文章【python單鏈表中如何插入和輸出節點?】中給大家介紹了單鏈表是什么,以及如何進行添加節點、輸出所以節點。下面本篇文章給大家介紹如何查找和刪除節點,希望對大家有所幫助。
如何從單鏈表中查找節點?
與大多數數據結構一樣,查找元素是否存在的唯一方法是遍歷整個鏈表。請注意,如果鏈接列表已排序,我們可以使用二進制搜索。但是在這里我們將考慮一個未排序的鏈表。
工作原理:用戶給定需要查找的節點元素,如果我們找到元素,我們返回true,否則返回false;還可以使用計數器并返回元素的索引(如果存在)。
算法
1、將指針curr設置為頭部
2、將curr.data與輸入值進行比較:
● 如果相等,則返回True
● 否則,轉到下一個指針
3、重復步驟1-2,直到找到元素或滿足鏈接列表的結尾
實現代碼:def findNode(self,value):
curr = self.head
while curr:
if curr.getData() == value:
return True
curr = curr.getNextNode()
return False
如何從單鏈表中刪除節點?
從上面的示例中我們知道了如何查找節點,那么我們可以利用它來刪除節點。我們可以從用戶那里獲取一個值,在鏈接列表中找到該元素,如果它存在,就將其刪除。
注:讓用戶知道元素是否被成功刪除是非常重要的。因而,當刪除成功就返回True,否則返回False;請記住將size屬性減1。
讓我們將要刪除的節點稱為當前節點。其思想是將前一個節點的next鏈接到當前節點的next節點。例如,假設我們要從給定的鏈接列表中刪除4:原鏈表: H-->3-->4-->5
刪除4后:H-->3-->5
我們需要將3的下一個節點指向4的下一個節點,即5。
假設我們還要刪除3刪除3后:H-->5
注:要在上一個節點和當前節點的下一個節點之間建立連接,請務必跟蹤上一個節點。
算法
1、有兩個指針:
● CURR - 最初 分給頭
● prev - 最初指向無
2、如果輸入的值與curr的數據匹配,檢查prev存在:
● 如果是,則將prev的下一個節點設置為curr的下一個節點
● 如果不是,只需將頭部指向curr的下一個節點(當您要刪除第一個節點時會發生這種情況)
● 將size屬性減1
● 返回True
3、如果輸入的值與curr的數據不匹配,通過以下方式前往下一個節點:
● 指向先前的曲線
● 指著CURR到下一個節點CURR
4、重復步驟1-3直到鏈表結束
5、如果到達鏈接列表的末尾,則返回False,表示鏈接列表中沒有元素與輸入的值匹配
實現代碼: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
相關視頻教程推薦:《python3教程》
以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以關注Gxl網相關教程欄目!!!
總結
以上是生活随笔為你收集整理的python链表删除尾部节点_python单链表中如何查找和删除节点?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: filter函数的用法_JavaScri
- 下一篇: python读取excel送到网页_py