在之前的文章【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教學》
以上就是本篇文章的全部內容,希望對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !
以上是python單鍊錶中如何找到和刪除節點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!