SDUT_2122 数据结构实验之链表七:单链表中重复元素的删除

本文主要是介绍SDUT_2122 数据结构实验之链表七:单链表中重复元素的删除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提交代码

数据结构实验之链表七:单链表中重复元素的删除

Time Limit: 1000MS  Memory Limit: 65536KB
Submit  Statistic  Discuss
Problem Description

按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。

Input

第一行输入元素个数 n (1 <= n <= 15);
第二行输入 n 个整数,保证在 int 范围内。

Output

第一行输出初始链表元素个数;
第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。

Example Input
10
21 30 14 55 32 63 11 30 55 30
Example Output
10
30 55 30 11 63 32 55 14 30 21
7
30 55 11 63 32 14 21
Hint
Author
不得使用数组!
#include <iostream>
using namespace std;
struct node
{int num;node *next;
};
void display(struct node *head)
{while(head!=NULL){if(head->next!=NULL)cout<<head->num<<' ';elsecout<<head->num<<endl;head=head->next;}
}
void Delete(struct node *head,int n)
{node *p,*p1,*p2;p=head;while(p->next!=NULL)//刚遍历到最后一个节点时就结束,不对最后一个节点进行判断(因为在前面判断出 前面的节点值和最后一个节点值都不想等){p1=p;//p1作为索引,在遇到与p相等的值的时候,删除相等的节点p2=p->next;//由p后面的一个值开始进行遍历while(p2!=NULL)//后面的值不为空节点时进行循环{if(p->num==p2->num)//在while(p2!=NULL)循环中p->num的保持不变{p1->next=p2->next;//遇到相等的值的时候索引p1的值开始发生作用p2=p2->next;//删除节点n--;}else{p1=p1->next;//遇到不想等的时候,P1也要跟随变化,用于在遇到相等的时候发生作用p2=p2->next;}}p=p->next;//对下一个值进行判断}cout<<n<<endl;display(head);
}
void create_list(struct node *head,int n)
{node *p,*q;//	head=new node;head->next=NULL;for(int i=0;i<n;i++){p=new node;cin>>p->num;p->next=head->next;head->next=p;//从头节点入手,进行中间插入,head->num并没有值}cout<<n<<endl;display(head->next);
}
int main()
{node *head;head=new node;int n;cin>>n;create_list(head,n);Delete(head->next,n);return 0;
}
下面的段代码一直Runtime Error
#include <iostream>
using namespace std;
struct node
{int num;node *next;
};
void display(struct node *head)
{while(head!=NULL){if(head->next!=NULL)cout<<head->num<<' ';elsecout<<head->num<<endl;head=head->next;}
}
struct node *Delete(struct node *head,int n)
{node *p,*p1,*p2;p=head;while(p->next!=NULL)//刚遍历到最后一个节点时就结束,不对最后一个节点进行判断(因为在前面判断出 前面的节点值和最后一个节点值都不想等){p1=p;//p1作为索引,在遇到与p相等的值的时候,删除相等的节点p2=p->next;//由p后面的一个值开始进行遍历while(p2!=NULL)//后面的值不为空节点时进行循环{if(p->num==p2->num)//在while(p2!=NULL)循环中p->num的保持不变{p1->next=p2->next;//遇到相等的值的时候索引p1的值开始发生作用p2=p2->next;//删除节点n--;}else{p1=p1->next;//遇到不想等的时候,P1也要跟随变化,用于在遇到相等的时候发生作用p2=p2->next;}}p=p->next;//对下一个值进行判断}cout<<n<<endl;return head;
}
struct node *create_list(struct node *head,int n)
{node *p,*q;head->next=NULL;for(int i=0;i<n;i++){p=new node;cin>>p->num;p->next=head->next;head->next=p;}return head;
}
int main()
{node *head;head=new node;int n;cin>>n;create_list(head,n);cout<<n<<endl;display(head->next);Delete(head->next,n);display(head->next);return 0;
}


这篇关于SDUT_2122 数据结构实验之链表七:单链表中重复元素的删除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771914

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即

MybatisPlus中removeById删除数据库未变解决方案

《MybatisPlus中removeById删除数据库未变解决方案》MyBatisPlus中,removeById需实体类标注@TableId注解以识别数据库主键,若字段名不一致,应通过value属... 目录MyBATisPlus中removeBypythonId删除数据库未变removeById(Se

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例