203. Remove Linked List Elements

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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容