链表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

相关文章
|
2月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
37 1
|
4月前
|
程序员
【刷题记录】移除链表元素
【刷题记录】移除链表元素
|
2月前
|
存储 Java
数据结构第三篇【链表的相关知识点一及在线OJ习题】
数据结构第三篇【链表的相关知识点一及在线OJ习题】
29 7
01_移除链表元素
01_移除链表元素
|
2月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
33 0
|
4月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
5月前
【数据结构OJ题】复制带随机指针的链表
力扣题目——复制带随机指针的链表
55 1
【数据结构OJ题】复制带随机指针的链表
|
5月前
【数据结构OJ题】环形链表II
力扣题目——环形链表II
37 1
【数据结构OJ题】环形链表II
|
4月前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
4月前
|
Python
【Leetcode刷题Python】203.移除链表元素
文章提供了三种删除链表中特定值节点的方法:迭代法、虚拟节点迭代删除法和递归法,并给出了相应的Python实现代码。
28 0