刪除鍊錶中等於給定值 val 的所有節點。

2021-09-27 12:18:09 字數 813 閱讀 2733

我之前寫過一篇關於實現鍊錶的部落格:

例如,鍊錶中:1 2 5 4 5 5

刪除帶有數字5的結點,得到 1 2 4

這道題要分為兩種情況,空鍊錶和非空鍊錶

如果是空鍊錶,則沒有結點可以刪除,直接返回即可以

非空的情況下我們這麼處理:先處理後續的結點,在處理頭結點

處理頭節點之後的結點,這裡我們建立兩個結點來記錄,乙個是prev,乙個是結點是cur(用來判斷當前位置的值是不是我們要刪除的)如果是的話,用prev來輔助刪除,如果不是兩個都結點都向後挪

此時判斷cur.date為我們要刪除的值

我們借助prev來刪除,prev.next = cur.next

具體實現的**如下

public

void

romoveallkey

(int toremove)

linknode prev =

this

.head;

linknode cur =

this

.head.next;

while

(cur != null)

else}if

(this

.head.date == toremove)

return

;}

刪除鍊錶中等於給定值val的所有節點

刪除鍊錶中等於給定值val的所有節點 例如 給出鍊錶1 2 3 3 4 5 3,和 val 3,你需要返回刪除3之後的鍊錶 1 2 4 5 way1 迭代 追加人為表頭 陷入沒有表頭的陷阱,總是想記下刪除節點的先驅,導致折騰了很久,其實只要人為加乙個表頭就簡單很多了!definition for s...

刪除鍊錶中等於給定值 val 的所有節點。

採用快慢針的方法,listnode p指向鍊錶頭部,listnode q p.next。再定義乙個listnode start表示刪除指定val值後的頭結點,先賦值為p。結點的遍歷從q結點開始,當q.val不等於val時,p的下乙個結點指向q,並且p q同時向後移動,直至q null,表示遍歷鍊錶結...

刪除鍊錶中等於給定值 val 的所有節點

刪除鍊錶中等於給定值val的所有節點 示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 分析過程 1 要想刪除所有給定值為val的節點,必須要遍歷一次鍊錶 2 從第二個節點開始遍歷 如果從第乙個節點開始遍歷,第乙個節點的prev會出現空指標異常 3.1 如果cur節點的值...