1. 程式人生 > >【牛客演算法筆試面試精講筆記】單鏈表刪除特定元素

【牛客演算法筆試面試精講筆記】單鏈表刪除特定元素

題目要求:

現在有一個單鏈表。連結串列中每個節點儲存一個整數,再給定一個值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;
    }
};