鍊錶 在單鏈表中刪除指定值的節點

2022-07-26 10:42:21 字數 744 閱讀 1060

問題描述:

給定乙個鍊錶的頭結點head和乙個整數num,請實現函式將值為num的節點全部刪除。

例如:鍊錶為1->2->3->5->3->6->null,num=3,調整後的鍊錶為: 1->2->5->6->null

演算法實現:

public class node 

}演算法1:

public node removevalue1(node head, int num) 

head = head.next;

}while (!stack.isempty())

return head;

}演算法2:

public node removevalue2(node head, int num) 

head = head.next;

}node pre = head;

node cur = head;

while (cur != null) else

cur = cur.next;

}return head;

}

演算法解析:

解法1:

需要乙個額外的棧空間,通過將「有效的資料入棧」,之後在出棧的過程中重新「鏈節點成表」,要注意的是出棧時「head」指向的移動。

解法2:

先通過判斷和必要的移動,找到「最終的頭結點」,設定兩個臨時變數指向head, 通過這兩個變數的移動、賦值、比較判斷,將「最終頭指標」之後待刪除的節點移除掉。

17 在單鏈表中刪除指定值的節點

給定乙個鍊錶的頭節點head和乙個整數num,請實現函式將值為num的節點全部刪除 時間複雜度o n 空間複雜度o n class solution cur cur.next while stack.isempty return cur 時間複雜度o n 空間複雜度o 1 class solutio...

從單向鍊錶中刪除指定值的節點

輸入乙個單向鍊錶和乙個節點的值,從單向鍊錶中刪除等於該值的節點,刪除後如果鍊錶中無節點則返回空指標。鍊錶結點定義如下 struct listnode 詳細描述 本題為考察鍊錶的插入和刪除知識。鍊錶的值不能重複 構造過程,例如 1 2 3 2 5 1 4 5 7 2 最後的鍊錶的順序為 2 7 3 1...

從單向鍊錶中刪除指定值的節點

輸入乙個單向鍊錶和乙個節點的值,從單向鍊錶中刪除等於該值的節點,刪除後如果鍊錶中無節點則返回空指標。鍊錶結點定義如下 struct listnode int m nkey listnode m pnext 詳細描述 本題為考察鍊錶的插入和刪除知識。鍊錶的值不能重複 構造過程,例如 1 2 3 2 5...