首页 > 其他分享 >c语言--力扣简单题目(删除排序链表中的重复元素)讲解

c语言--力扣简单题目(删除排序链表中的重复元素)讲解

时间:2024-09-10 19:23:32浏览次数:3  
标签:Node 力扣 head p1 -- next 链表 tail

题目如下:

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

示例 1:

输入:head = [1,1,2] 输出:[1,2]

示例 2:

输入:head = [1,1,2,3,3] 输出:[1,2,3]

提示:

链表中节点数目在范围 [0, 300] 内

-100 <= Node.val <= 100

题目数据保证链表已经按升序 排列

结构体定义:

typedef struct Node {
char val;
struct Node* next;
}Node;
typedef Node* List;

文章目录

第一部分

List head, tail;
Node* p, * p1;//p1用来删除节点
p = (Node*)malloc(sizeof(struct Node));
p1 = (Node*)malloc(sizeof(struct Node));
int ch, val;
head = p;
tail = p;
head->next = NULL;
printf("请输入链表的内容");
while ((ch = getchar()) != '\n') {
    if (ch == ' ') {
        continue;
    }
    p = (Node*)malloc(sizeof(struct Node));
    p->val = ch-48;
    tail->next = p;
    tail = p;
    tail->next = NULL;
}

第一部分进行输入。

第二部分

tail = head->next;//让tail指向存储数据的第一个节点
while (tail->next != NULL) {
    if (tail->next->val == tail->val) {
        p1 = tail->next;
        tail->next = p1->next;
        free(p1);
    }
    else {
        tail = tail->next;
    }
}
while (head->next != NULL) {
    head = head->next;
    printf("%d ", head->val);
}
return 0;

第二部分我们先让tail指针指向第一个节点,因为题目已经是按升序排序好,所以我们这里不需要进行排序,我们将当前的节点储存的值与下一个节点储存的值进行比较,如果相等,那么我们进行删除操作,如果不相等,那么我们让tail指针指向下一个节点。
当退出循环后我们再进行打印就可以了。

标签:Node,力扣,head,p1,--,next,链表,tail
From: https://blog.csdn.net/2401_85637543/article/details/142106875

相关文章

  • Baichuan-13B 大模型的网络带货博客​
    Baichuan-13B是由百川智能继Baichuan-7B之后开发的包含130亿参数的开源可商用的大规模语言模型,在权威的中文和英文benchmark上均取得同尺寸最好的效果。本次发布包含有预训练(Baichuan-13B-Base)和对齐(Baichuan-13B-Chat)两个版本。Baichuan-13B有如下几个特点:更大尺寸......
  • Java 设计模式-状态模式
    目录一.概述二.主要角色三.代码示例四.优缺点优点:缺点:五.常见应用场景一.概述        状态模式是一种行为设计模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类。状态模式把所有的与一个特定的状态相关的行为放到一个类......
  • Qml 实现瀑布流布局
     【写在前面】最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着Qml有没有类似实现。结果百度了一圈也没有(T_TQml凉了凉了),于是,我按照自己理解,简单实现了一个Qml版的瀑布流布局。关于瀑布流:瀑布流布局(WaterfallLayout),也被称为瀑......
  • Java 设计模式-代理模式
    目录概述一.什么是代理模式1.举例说明二.代理模式作用1.保护代理2.增强功能3.代理交互4.远程代理:三.代理模式3个角色四.静态代理1.代码示例:五.JDK动态代理1.代码示例:六.CGLIB动态代理1.代码示例 七.JDK动态代理和CGLIB动态代理区别八.两种在......
  • 从学习到的因果网络中估计因果效应
    本文介绍了一种新的因果效应推断方法,它不同于传统的先构建概率表达式再用观测数据评估的方法。该研究提出了一种替代方案,即直接从观测数据中学习因果贝叶斯网络(CBN)及其潜在变量,然后利用学习到的模型来回答因果效应查询。这种方法特别适用于离散的可观测变量。通过实验评估表明,这种......
  • Python数据结构集合的相关介绍
    集合是一种无序、可变的数据结构,它也是一种变量类型,集合用于存储唯一的元素。集合中的元素不能重复,并且没有固定的顺序。在Python提供了内置的 set 类型来表示集合,所以关键字set就是集合的意思。你可以使用大括号 {} 或者 set() 函数来创建一个集合。my_set={1,2,......
  • MySQL进阶(带你从入门到精通)
    mysql高级今日目标掌握约束的使用1,约束上面表中可以看到表中数据存在一些问题:id列一般是用标示数据的唯一性的,而上述表中的id为1的有三条数据,并且马花疼没有id进行标示柳白这条数据的age列的数据是3000,而人也不可能活到3000岁马运这条数据的math数学成绩......
  • MySQL进阶(三)--多表查询
    3,多表查询多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据。我们通过具体的sql给他们演示,先准备环境DROPTABLEIFEXISTSemp;DROPTABLEIFEXISTSdept;#创建部门表 CREATETABLEdept(didINTPRIMARYKEYAUTO_INCREMENT,dname......
  • 【操作系统】操作系统引导(Boot)非常详细!!!
    安装操作系统后的磁盘(硬盘)在一个新磁盘里安装操作系统,安装后磁盘里面可能是下图这样,除了能看见的C、D、E、F磁盘分区外,在磁盘开头位置会留出一片区域用于存储MBR分区表是一个数据结构,说明每个分区分别占多大空间以及每个分区的地址范围C盘安装了操作系统,并且会使用C盘来......
  • jsp超市管理系统06c97 本系统(程序+源码+数据库+调试部署+开发环境)
    jsp超市管理系统06c97本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能商品分类,员工,库存信息,进货信息,销售信息技术要求:   开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBo......