公司建设网站的费用,企业公司网站源码,临漳seo整站排名,智慧团建电脑版入口原题链接#xff1a;https://leetcode.cn/problems/remove-linked-list-elements/description/
1. 题目描述 2. 思路分析
我们可以定义一个结构体指针变量cur#xff0c;让cur一开始指向头结点#xff0c;同时定义一个结构体指针prev#xff0c;令prev初始化为空指针NULL…原题链接https://leetcode.cn/problems/remove-linked-list-elements/description/
1. 题目描述 2. 思路分析
我们可以定义一个结构体指针变量cur让cur一开始指向头结点同时定义一个结构体指针prev令prev初始化为空指针NULL。
我们使用cur遍历链表如果当前结点的值和val相等我们再用if选择语句进行相应操作
1. 如果cur指向的结点是头结点我们就让头指针head走到下一个结点headcur-next再free释放掉当前结点cur。再让cur指向此时的头结点curhead。
2. 如果cur指向的结点不是头结点我们就让prev的next指向cur的next
prev-nextcur-next。再free释放掉当前结点cur。再让cur往后走一步
curprev-next。
如果当前结点的值和val不相等我们就用prev保存当前结点让cur往后遍历curcur-next. 3. 代码实现
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* removeElements(struct ListNode* head, int val){struct ListNode *curhead,*prevNULL;while(cur){if(cur-valval){if(curhead){headcur-next;free(cur);curhead;}else{prev-nextcur-next;free(cur);curprev-next;}}else{prevcur;curcur-next;}}return head;
}