0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据结构:删除有序链表的重复节点

嵌入式攻城狮 来源:嵌入式攻城狮 2023-12-05 15:46 次阅读

给定一个有序单链表(从小到大有序)的头结点head(该结点有值),删除链表中的重复元素,使链表中的所有元素都只出现一次。如当输入{1,1,2} 时,经删除后,原链表变为 {1,2},对应的输出为 {1,2}。

代码实现

C语言代码:

structListNode*deleteDuplicates(structListNode*head){
if(head==NULL)
returnhead;

structListNode*p;
p=head;
while(p->next!=NULL)
{
if(p->val==p->next->val)
p->next=p->next->next;
else
p=p->next;
}

returnhead;
}

图解代码

第一步:定义一个新结点,将其指向头结点

421334ee-9340-11ee-939d-92fbcf53809c.png

第二步:当前结点的值与当前结点的下一个结点数值做比较:如果数值相等,直接将当前结点指向下一个结点的next结点;不相等的话继续遍历结点

422b930e-9340-11ee-939d-92fbcf53809c.png422f5c14-9340-11ee-939d-92fbcf53809c.png

第三步:返回头结点

42562c18-9340-11ee-939d-92fbcf53809c.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136688
  • 代码
    +关注

    关注

    30

    文章

    4779

    浏览量

    68521
  • 数据结构
    +关注

    关注

    3

    文章

    573

    浏览量

    40123
  • 链表
    +关注

    关注

    0

    文章

    80

    浏览量

    10558

原文标题:数据结构:删除有序链表的重复节点

文章出处:【微信号:嵌入式攻城狮,微信公众号:嵌入式攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    讲解链表删除、修改以及插入

    上期介绍了动态链表怎么建立,以及使用循环的方式怎么输出整个链表中各个节点数据,这期主要讲解 链表删除
    发表于 01-13 15:25 2553次阅读
    讲解<b class='flag-5'>链表</b>的<b class='flag-5'>删除</b>、修改以及插入

    C语言实现单链表-增删改查

    链表是由一连串节点组成的数据结构,每个节点包含一个数据值和一个指向下一个节点的指针。
    的头像 发表于 05-25 15:05 1221次阅读
    C语言实现单<b class='flag-5'>链表</b>-增删改查

    数据结构中最简单的链表

    数据结构作为嵌入式工程师必修课程之一,今天,我们就来讲一讲数据结构中最简单的链表,包含链表的初始化、插入和遍历操作。 链表在项目开发中使用的
    发表于 06-13 17:40 367次阅读

    Linux内核的链表操作

    Linux内核的链表操作本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表
    发表于 08-29 11:13

    Linux Kernel数据结构:链表

    Linux Kernel数据结构链表原创 2016年10月20日 22:58:25标签:LINUX/kernel/链表 数据结构数据结构
    发表于 09-25 16:41

    收藏 | 程序员面试,你必须知道的8大数据结构

    是另一个重要的线性数据结构,乍一看可能有点像数组,但在内存分配、内部结构以及数据插入和删除的基本操作方面均有所不同。链表就像一个
    发表于 09-30 09:35

    数据结构试题库,含答案

    ;next=s;C. s->next=p->next;p=s;7. 设线性链表中的节点结构为(data, next),若想删除节点p的直接
    发表于 03-07 16:19

    数据结构链表的基本操作

    嵌入式学习基础-数据结构链表的基本操作链表节点采用结构体的方式进行定义,下面是最基础的定义只有一个数据
    发表于 12-22 08:05

    Linux内核中的数据结构的一点认识

    成员,那么到时候链表中没有任何数据,这样的链表有什么用呢?其实这就是内核链表设计的巧妙之处,因为在整个内核中需要使用链表来存放的
    发表于 04-20 16:42

    算法与数据结构——双向链表

    第三章为算法与数据结构,本文为3.3 双向链表
    的头像 发表于 09-19 17:56 7289次阅读
    算法与<b class='flag-5'>数据结构</b>——双向<b class='flag-5'>链表</b>

    你知道Linux内核数据结构中双向链表的作用?

    Linux 内核提供一套双向链表的实现,你可以在 include/linux/list.h 中找到。我们以双向链表着手开始介绍 Linux 内核中的数据结构 ,因为这个是在 Linux 内核中使用最为广泛的
    发表于 05-14 17:27 1876次阅读

    浅析LeetCode 83删除排序链表中的重复元素

    给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表
    的头像 发表于 02-06 10:25 737次阅读

    Linux内核的链表数据结构

    Linux内核实现了自己的链表数据结构,它的设计与传统的方式不同,非常巧妙也很通用。
    的头像 发表于 03-24 11:34 832次阅读
    Linux内核的<b class='flag-5'>链表</b><b class='flag-5'>数据结构</b>

    链表数据结构基本概念

    的必要元素。 头节点: 头结点是为了操作的统一和方便而设立的,放在第一元素的结点之前,其数据域一般无意义(也可存放链表的长度)。 有了头结点,对在第一元素结点前插入结点和删除第一结点,
    的头像 发表于 07-27 11:14 795次阅读
    <b class='flag-5'>链表</b><b class='flag-5'>数据结构</b>基本概念

    Linux内核中使用的数据结构

    包含的元素可以动态创建并插入和删除链表的每个元素都是离散存放的,因此不需要占用连续的内存。链表通常由若干节点组成,每个节点
    的头像 发表于 11-09 14:24 485次阅读
    Linux内核中使用的<b class='flag-5'>数据结构</b>