Leetcode:203 移除連結串列元素
阿新 • • 發佈:2018-11-11
刪除連結串列中等於給定值 val 的所有節點。
示例:
輸入: | 1->2->6->3->4->5->6, val = 6 |
---|---|
輸出: | 1->2->3->4->5 |
這個問題大多數情況我們都可以考慮到,但是有的情況不容易想到,例如:
1—>NULL, val = 1 |
---|
當刪除1後,連結串列為空,所以我們需要在連結串列的頭結點之前建立一個pRoot,來返回
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeElements(ListNode* head, int val) { ListNode*pRoot=new ListNode(0);//在連結串列前面建立一個節點 pRoot->next=head; if(val==NULL) { return head; } ListNode*prev=pRoot; ListNode*cur=head; while(cur) { if(cur->val!=val)//當cur的值不為val,cur和prev繼續往下走 { prev=prev->next; cur=cur->next; } else { prev->next=cur->next;//prev的next指向cur的next cur=prev->next;//cur還等於prev的next } } return pRoot->next;//返回pRoot的next也就是連結串列的頭結點 } };