C语言_给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

2023-11-05

/*2.给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };


struct ListNode* deleteDuplicates(struct ListNode* head){

}*/

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
int main(){//主函数开始
    //设定单链表
    struct ListNode {
        int val;
        struct ListNode *next;
    };

    struct ListNode Head,*p0,*p1,*p2;//head是头指针,p0是前指针,p1是现指针,p2是后指针

    Head.val=-1;
    Head.next=NULL;
    //deleteDuplicate函数开始
    struct ListNode* deleteDuplicates(struct ListNode* head){
        //最多n次循环,冒泡对比,有一个是内层的循环,有一个外层循环,外层循环执行的是录入n次,内层执行的是检测和前指向后
        //循环开始
        while(1){
            //把头指针变成前指针和现指针
            p0=p1=head;
            while(1){//内循环开始
                //如果现指针的数值与头指针一样就把前指针指向现指针指向的指针,前指针不变
                if(head->val==p1->val){
                    p0->next=p1->next;
                    //printf("Testsame\n");

                }
                //如果不一样就把现指针变成前指针,
                else{
                    p0=p1;
                    //printf("Testinsame\n");
                }
                //如果现指针指向的指针是空指针就终止内层循环
                if(p1->next==NULL){//printf("Testbreak\n");
                break;}
                //把现指针指向的指针变成现指针
                p1=p1->next;
                /**
                //把现指针指向的指针变成现指针
                p1=p1->next;
                //如果现指针是空指针就终止内层循环
                if(p1==NULL){//printf("Testbreak\n");
                break;}
                **/

            }//内循环结束
            //如果头指针指向的指针是空指针就终止循环
            if(head->next==NULL){break;}
            //把头指针指向的指针变成头指针
            head=head->next;

        }//循环结束
    }//deleteDuplicates函数结束

    //inputList函数开始
    struct ListNode* inputList(struct ListNode* head){
        //需要输入n个数字
        int n=0;
        printf("Please enter how many number do you want to:");
        scanf("%d",&n);
        //循环n-1次
        for(int i=1;i<=n-1;i++){
            //分配新空间给后指针
            p2=(struct ListNode*)malloc(sizeof(struct ListNode));
            //让现指针指向后指针
            head->next=p2;//printf("->");
            //输入现指针的数值
            scanf("%d ",&head->val);//printf("->");
            //让现指针指向的指针变成现指针
            head=head->next;
            //printf("->");
        }
        //最后一次输入数字
        scanf("%d",&head->val);
        head->next=NULL;
    }//inputList函数结束

    //outputList函数开始
    struct ListNode* outputList(struct ListNode* head){
        while(1){
            //判断现指针指向的指针是不是空指针,如果是就终止循环
            if(head->next==NULL)break;
            //输出现指针的数字
            printf("%d->",head->val);
            //把现指针指向的指针变成现指针
            head=head->next;
        }
        //输出最后一个数值
        printf("%d\n",head->val);
    }
    //outputList函数结束

    inputList(&Head);outputList(&Head);
    deleteDuplicates(&Head);outputList(&Head);

}//主函数结束

答案是完美的,任何数据都可以
评论区指点我

经验吸取
判断后才把现指针指向的指针变成现指针
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言_给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 的相关文章

  • 了解typename的双重意义

    1 声明template参数时 前缀关键字class和typename可互换 2 请使用关键字typename表示嵌套从属类型名称 但不得在base class lists 基类列 或member initialization list 成
  • UART的Rx和Tx引脚如何互换,电平如何反转( SWAP-交换算法)

    今天给大家分享关于STM32关于UART的一些新特性 主要针对较新系列STM32 如 STM32H7 F0 G0 G4等 的UART 可通过软件改变Rx和Tx引脚 电平反转 高低反序 介绍超时等 有些时候 我们在外接RS232芯片时 会犯这

随机推荐

  • libdbus 实例以及使用d-feet查看接口方法

    libdbus 实例以及使用d feet查看接口方法 libdbus介绍 总线 linux系统进程间通过dbus通信 D BUS由总线构成 总线分为两种 系统总线 system bus 和会话总线 session bus 系统总线在引导时就
  • 关于win10系统system_service_exception蓝屏(hardwareprotect_x64.sys)

    hardwareprotect x64 sys报错蓝屏主要是由win10系统更新后 系统与鲁大师不兼容 win10会将鲁大师下hardwareprotect x64 sys文件映射到系统文件 导致报错蓝屏 建议在第一次报错蓝屏后 就删除鲁大
  • layui文件上传+ThinkPHP5.1

    引入文件 1 前端html代码
  • 逻辑回归分类器(Logistic Regression Classifier)

    Logistic regression 逻辑回归 是当前业界比较常用的机器学习方法 用于估计某种事物的可能性 也用来进行分类 在分类的情形下 经过学习之后的LR分类器其实就是一组权值w0 w1 wm 当输入测试样本集中的测试数据时 这一组权
  • 元组,字典,集合

    元组 字典 集合的基本操作 python 元组 tuple 基本操作 元组被称为只读列表 数据可被查询 但不能被修改 类似于列表的切片操作 元组写在小括号里面 元素之前用逗号隔开 对于一些不想被修改的数据 可以用元组来保存 创建元组 1 创
  • ModbusRTU协议封装,控制RJ45报警器,复制一下就能用哦~

    本文只对 写保持寄存器 HoldingRegister 做操作 其他类型的寄存器方法方法也在ModbusWriteOrRead类中 可自行测试 报警器设备型号 USB版 JD01AX07 01 设备外观及亮灯 文档说明 部分 注 以下图第一
  • Matlab桌面启动失败java.lang.​NullPointe​rException

    最全的解决方案集合 考虑到之前安装CubeMX时装了java 而Matlab底层是Java 先拿第四条试 成功了 然后删掉改动的部分 nodesktop nojvm再重启 也能用了
  • React event.preventDefault使用方法

    event preventDefault 定义和用法 取消事件的默认动作 简单看一下下面代码 class NameForm extends React Component constructor props super props this
  • 基于布谷鸟优化LSTM的短时电力负荷预测

    0 引言 短期电力负荷预测是电力系统安全调度 经济运行的重要依据 随着电力系统的市场化 负荷预测的精度直接影响到电力系统运行的可靠性 经济性和供电质量 LSTM 为短期电力负荷预测提供了一个新的研究方向 本文将LSTM用于短期电力负荷预测
  • css 上下左右居中的几种方法

    html结构 div class father div class son div div 1 父元素宽高固定 子元素宽高固定 那么子元素可以通过上 左右的固定margin left 父元素宽度 子元素宽度 2 margin top 父元素
  • Spring Data Elasticsearch 3.13 操作摘要

    1 4 7 异步查询结果 可以使用Spring的异步方法执行功能异步运行存储库查询 这意味着该方法在调用时立即返回 而实际的查询执行发生在已提交给Spring的任务中TaskExecutor 异步查询执行与响应式查询执行不同 不应混合使用
  • 软件架构模式-读书笔记(4)-微服务架构

    微服务架构模式作为替代单体应用和面向服务架构的一个可行的选择 在业内迅速取得进展 微服务架构的每个组件都作为一个独立单元进行部署 让每个单元可以通过有效 简化的传输管道进行通信 同时它还有很强的扩展性 应用和组件之间高度解耦 使得部署更为简
  • windows7 安装mongodb

    本文转载至 https blog csdn net qq 27093465 article details 54574948 注意这个安装的位置 下面要用呢 图上的说的是刚刚安装完的时候的样子 打错字啦 1 创建几个文件夹具体如下 数据库路
  • 5.12 QQ群里的第二次线下活动

    author skate time 2013 05 14 5 12 QQ群里的第二次线下活动 分享主题 大数据hadoop 1 5小时 分享人 袁科 完美世界系统中心 长期从事大数据处理技术工作 对分布式系统开发 监控 配置 维护比较感兴趣
  • linux sftp多个秘钥,Linux下sftp配置之密钥方式登录

    由于vsftp采用明文传输 用户名密码可通过抓包得到 为了安全性 需使用sftp 锁定目录且不允许sftp用户登到服务器 由于sftp使用的是ssh协议 需保证用户只能使用sftp 不能ssh到机器进行操作 且使用密钥登陆 不是22端口 创
  • Java正则表达式以及Pattern和Matcher类详解

    概述 正则表达式 一 概述 用来描述或者匹配一系列符合某个语句规则的字符串 二 单个符号 1 英文句点 符号 匹配单个任意字符 表达式t o可以匹配 tno t o teo等等 不可以匹配 tnno to Tno t正o等 2 中括号 只有
  • 第十一届蓝桥杯省赛模拟题第八题

    第八题 题目 问题描述 对于一个 n 行 m 列的表格 我们可以使用螺旋的方式给表格依次填上正整数 我们称填好的表格为一个螺旋矩阵 例如 一个 4 行 5 列的螺旋矩阵如下 1 2 3 4 5 14 15 16 17 6 13 20 19
  • Java的基本数据类型有哪些?

    一 Java 变量类型 在Java语言中 所有的变量在使用前必须声明 声明变量的基本格式如下 type identifier value identifier value 格式说明 type为Java数据类型 identifier是变量名
  • ip地址0.0.0.0与127.0.0.1的区别(转载)

    原文链接 http blog csdn net ttx laughing article details 58586907 最近在项目开发中发现一个奇怪的问题 当服务器与客户端在同一台机器上时 用服务器ip 本地主机ip 192 168 1
  • C语言_给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    2 给定一个排序链表 删除所有重复的元素 使得每个元素只出现一次 示例 1 输入 1 gt 1 gt 2 输出 1 gt 2 示例 2 输入 1 gt 1 gt 2 gt 3 gt 3 输出 1 gt 2 gt 3 Definition f