5_8链表指定值清除

2017-09-14  本文已影响5人  X_Y

现在有一个单链表。链表中每个节点保存一个整数,再给定一个值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
        ListNode *curr = head, *pre = NULL;
        while(curr){
            if(val == curr->val){
                if(curr == head){
                    head = head->next;
                    free(curr);
                    curr = head;
                    pre = head;
                }else{
                    pre->next = curr->next;
                    free(curr);
                    curr = pre->next;
                }
            }else{
                pre = curr;
                curr = curr->next;
            }
        }
        return head;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读