1. 程式人生 > >LeetCode203. 移除連結串列元素

LeetCode203. 移除連結串列元素

題目來源:

https://leetcode-cn.com/problems/remove-linked-list-elements/description/

題目描述:

刪除連結串列中等於給定值 val 的所有節點。

示例:

輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5

 這題比較簡單就不過多描述了,只需要注意一點就是如果要刪除的結點是頭結點的話要分出一種情況討論。

程式碼如下:

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode* p = head;
        ListNode* previous;
        while(p) {
            if(p->val == val) {
                //如果要刪除的結點是頭結點
                if(p == head) {
                    head = p->next;
                    free(p);
                    p = head;
                }
                else {
                    previous->next = p->next;
                    free(p);
                    p = previous->next;
                }
            }
            else {
                previous = p;
                p = p->next;     
            }
        }
        return head;
    }
};