首頁  >  文章  >  後端開發  >  python單鍊錶中如何找到和刪除節點?

python單鍊錶中如何找到和刪除節點?

青灯夜游
青灯夜游原創
2019-03-18 14:08:505671瀏覽

在之前的文章【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教學

以上就是本篇文章的全部內容,希望對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是python單鍊錶中如何找到和刪除節點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn