刪除鍊錶中等於給定值val
的所有節點
例如:給出鍊錶1->2->3->3->4->5->3
, 和 val =3
, 你需要返回刪除3之後的鍊錶:1->2->4->5
way1:迭代--追加人為表頭:
陷入沒有表頭的陷阱,總是想記下刪除節點的先驅,導致折騰了很久,其實只要人為加乙個表頭就簡單很多了!!
/**
* definition for singly-linked list.
* struct listnode
* };
*/class solution else
}return temp->next;
}};
way2:遞迴
:每次對頭進行判斷是否此值等於給定值val,如果相等則將此節點刪除,將下乙個節點作為頭節點遞迴呼叫自己,否則將此節點的下乙個節點為作為頭節點遞迴呼叫自己,呼叫後的返回值作為此時頭節點的下乙個節點。
/*
* definition for singly-linked list.
* struct listnode
* };
*/class solution else if ( head->val ==val ) else
}};
刪除鍊錶中等於給定值 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節點的值...
刪除鍊錶中等於給定值 val 的所有節點。
這道題的做法是遍歷列表,定義乙個當前結點的前驅,當前結點,當碰到和該資料相同的數,就讓改資料所在結點的前驅指向當前結點的下乙個結點,如果不相同,前驅和當前結點繼續遍歷,重複此操作,還有一種特殊情況就是當要刪除的結點的資料和頭結點相同時要分開處理。有三種解決辦法,第一種是直接把頭結點移至下乙個結點,如...