單鏈表刪除節點

2021-10-10 07:56:46 字數 494 閱讀 7351

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。

思路:刪除某個結點需要找到該結點的前乙個結點,由於單向鍊錶沒有指向前乙個結點的指標,所以不得不從頭指標開始遍歷鍊錶。顯然時間複雜度為o(n)。

(1)待刪除的節點不是尾節點的情況:首先把待刪除的節點的前乙個節點的pre指標指向待刪除的節點的後乙個節點的首位址(這樣就把這個節點從鍊錶中摘出來了),然後再將這個摘出來的節點free掉即可。

(2)待刪除的節點是尾節點的情況:首先把待刪除的尾節點的前乙個節點的pre指標指向null(這時候就相當於原來尾節點前面的乙個節點變成了新的尾節點),然後將摘出來的節點free掉。

var deletenode = function(head, val) 

node = node.next;

}return pre.next;

};

單鏈表刪除重複節點

學後一年重看資料結構,確實難啊,搞了半天才搞明白這個小問題。include include include typedef char elemtype typedef struct node 結點型別定義 node,linklist linklist為結構指標型別 void createfromta...

從無頭單鏈表中刪除節點

題目 在乙個給定的單向鍊錶中,如何遍歷一次刪除特定的節點 解法 這是乙個典型的逆向思維問題,正常的刪除需要把當前節點的前面節點和後面節點鏈結起來,再刪除當前節點,完成任務。當前節點的後續節點比較容易得到,但困難的是無法得到當前節點的前面節點,逆向思維的結果是不刪除當前節點,而是將後面節點的資料拷貝到...

刪除單鏈表中指定的節點

include stdafx.h include include include using namespace std struct node 建立單鏈表 node createsinglelist int arr,int n return head 輸出單鏈表 void print node h...