【牛客演算法筆試面試精講筆記】單鏈表刪除特定元素
阿新 • • 發佈:2018-12-22
題目要求:
現在有一個單鏈表。連結串列中每個節點儲存一個整數,再給定一個值val,把所有等於val的節點刪掉。
給定一個單鏈表的頭結點head,同時給定一個值val,請返回清除後的連結串列的頭結點,保證連結串列中有不等於該值的其它值。請保證其他元素的相對順序。
測試樣例:
{1,2,3,4,3,2,1},2
{1,3,4,3,1}
注意事項:
要注意不同情況的處理:頭結點為空,頭結點為待刪除結點,中間結點為待刪除結點
程式碼實現:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ class ClearValue { public: ListNode* clear(ListNode* head, int val) { // write code here if (head == NULL) return head; if(head->val == val) { head = head->next; } ListNode* cur = head->next; ListNode* pre = head; while(cur!=NULL){ if(cur->val == val){ pre->next = cur->next; cur = pre->next; } else{ cur = cur->next; pre = pre->next; } } return head; } };