美文网首页
203. Remove Linked List Elements

203. Remove Linked List Elements

作者: YellowLayne | 来源:发表于2017-06-26 17:25 被阅读0次

1.描述

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

2.分析

3.代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* removeElements(struct ListNode* head, int val) {
    if (NULL == head) return head;
    struct ListNode *cur = head;
    struct ListNode *pre = head;
    while (cur != NULL) {
        if (cur->val == val) {
            struct ListNode *tmp = cur;
            if (cur == head) {
                cur = head = pre = cur->next;
            } else {
                pre->next = cur->next;
                cur = cur->next;
            }
            free(tmp);
            tmp = NULL;
        } else {
            pre = cur;
            cur = cur->next;
        }
    }
    return head;
}

相关文章

网友评论

      本文标题:203. Remove Linked List Elements

      本文链接:https://www.haomeiwen.com/subject/buyjcxtx.html