链表oj题讲解(1)——移除链表元素

简介: 在初步给大家介绍链表之后,为了让大家更好的理解和巩固链表,小编这里会从易到难以此给大家带来一系列关于链表的oj题。那么接下来就让我们看看今天的例题。

前言

在初步给大家介绍链表之后,为了让大家更好的理解和巩固链表,小编这里会从易到难以此给大家带来一系列关于链表的oj题。那么接下来就让我们看看今天的例题。


1.题目描述

2. 题目分析前言

在初步给大家介绍链表之后,为了让大家更好的理解和巩固链表,小编这里会从易到难以此给大家带来一系列关于链表的oj题。那么接下来就让我们看看今天的例题。


1.题目描述

2. 题目分析前言

在初步给大家介绍链表之后,为了让大家更好的理解和巩固链表,小编这里会从易到难以此给大家带来一系列关于链表的oj题。那么接下来就让我们看看今天的例题。


1.题目描述

2. 题目分析

法二:

这里我们可以采取创建哨兵位节点,这样就可以避免上面多种情况的讨论,具体如下

这里到达的效果与法一的情况二一致,我们直接进行相应操作即可。

3.相应代码

法一:

struct ListNode* removeElements(struct ListNode* head, int val){
 struct ListNode*p=NULL;
 struct ListNode* cur=head;
 while(cur)
 {
     if(cur->val==val)
     {
         struct ListNode*next=cur->next;
         if(p==NULL)
         {
             head=cur->next;
         }
         else
         {
            p->next=cur->next;
         }
         free(cur);
         cur=next;
     }
     else
     {
         p=cur;
         cur=cur->next;
     }
 }
 return head;
}

法二:

struct ListNode* removeElements(struct ListNode* head, int val){
 struct ListNode* dummyhead=(struct ListNode* )malloc(sizeof(struct ListNode));
 dummyhead->next=head;
 struct ListNode*p=dummyhead;
 struct ListNode* cur=head;
 while(cur)
 {
     if(cur->val==val)
     {
         p->next=cur->next;
         free(cur);
         cur=p->next;
     }
     else
     {
         p=p->next;
         cur=cur->next;
     }
 }
 return dummyhead->next;
}

image.png

相关文章
|
1月前
数据结构——链表OJ题
数据结构——链表OJ题
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
2天前
|
存储
三种方法实现获取链表中的倒数第n个元素
三种方法实现获取链表中的倒数第n个元素
|
1月前
|
存储 JavaScript
leetcode82. 删除排序链表中的重复元素 II
leetcode82. 删除排序链表中的重复元素 II
22 0
|
1月前
leetcode83. 删除排序链表中的重复元素
leetcode83. 删除排序链表中的重复元素
10 0
|
1月前
leetcode2487.从链表中移除节点
leetcode2487.从链表中移除节点
20 1
|
1月前
|
算法
常见算法题——203.移除链表元素
【2月更文挑战第9天】
24 0
|
2月前
|
算法 前端开发
删除排序链表中的重复元素 II
删除排序链表中的重复元素 II
13 0
|
2月前
|
算法 前端开发
删除排序链表中的重复元素
删除排序链表中的重复元素
17 0
|
2月前
|
算法
顺序表、链表相关OJ题(2)
顺序表、链表相关OJ题(2)