C 203. 移除链表元素

文章目录

  • 一、题目描述
  • 二、案例
  • 三、参考代码


一、题目描述

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。


二、案例

示例 1:

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:

输入:head = [], val = 1
输出:[]
示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]


三、参考代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* removeElements(struct ListNode* head, int val){
        struct ListNode* cur = head;
        struct ListNode* pre = NULL;
        if(head == NULL){
            return head;
        }
        else{
            while(cur){
                if(cur->val == val){
                    if(cur == head){
                        //头删
                        head = cur->next;
                        free(cur);
                        cur = head;
                    }
                    else{
                        //中间删除
                        pre->next = cur->next;
                        free(cur);
                        cur = pre->next;
                    }
                        
                }
                else{
                    //进行下去
                    pre = cur;
                    cur = cur->next;
                }
            }
            return head;
        }
    }


你可能感兴趣的:(LeetCode,数据结构,c语言,链表,开发语言,算法,数据结构)