博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L2-002 链表去重
阅读量:7103 次
发布时间:2019-06-28

本文共 1289 字,大约阅读时间需要 4 分钟。

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。

输入格式:

输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 − 来表示。

随后 N 行,每行按以下格式描述一个结点:

地址 键值 下一个结点

其中地址是该结点的地址,键值是绝对值不超过1的整数,下一个结点是下个结点的地址。

输出格式:

首先输出去重后的链表,然后输出被删除的链表。每个结点占一行,按输入的格式输出。

输入样例:

00100 599999 -7 8765423854 -15 0000087654 15 -100000 -15 9999900100 21 23854

输出样例:

00100 21 2385423854 -15 9999999999 -7 -100000 -15 8765487654 15 -1
#include
using namespace std;const int maxx = 100100;struct Node{ int Key; int Next;}a[maxx];int b[maxx];int main(){ int flag[10005]; memset(flag,0,sizeof(flag)); int first ,N ,value, m ,add; cin>>first>>N; for(int i=0;i
>add; cin>>a[add].Key>>a[add].Next; } m=first; value=abs( a[m].Key ) ; printf("%05d %d",first,a[m].Key); flag[value]=1; int count=0; while(1) { m=a[m].Next; if(m==-1) { cout<<" -1"<
0) { printf("%05d %d",b[0],a[b[0]].Key); for(int i=1;i

 

转载于:https://www.cnblogs.com/shengge-777/p/10398948.html

你可能感兴趣的文章
第三季度 46% 的 DDoS 攻击都来自 Linux 计算机
查看>>
《TCP/IP路由技术(第一卷)(第二版)》一1.12 故障诊断练习
查看>>
Team 文档协作功能重磅推出,你讨厌写文档吗?
查看>>
《编写高质量代码:改善c程序代码的125个建议》——建议15-1:避免“=”与“==”混淆...
查看>>
《程序员的修炼——从优秀到卓越》一一1.9 博伊德迭代法则
查看>>
你值得了解的 10 个有趣的 Linux 命令行小技巧
查看>>
女程序员做了个梦,各路大神惊现神级评论
查看>>
安全公司爆料:多家国产品牌手机被预装间谍应用!
查看>>
《Total Commander:万能文件管理器》——第5.2节.传统的压缩
查看>>
使用 Arduino 开发灌溉系统
查看>>
《R语言数据挖掘:实用项目解析》——1.13 缺失值(NA)的处理
查看>>
支付宝放大招 钻石会员免费提现额度达100万 | 附快速升级攻略
查看>>
微软声明: 没放弃 Windows 手机
查看>>
Java语言零基础菜鸟入门, Java程序学习的要点
查看>>
《大数据算法》一1.3 大数据算法设计与分析
查看>>
JAXenter 顶级框架大比拼,谁是 2017 人气之王?
查看>>
《思科绿色数据中心建设与管理》——1.4 绿色阻力
查看>>
《为iPad而设计:打造畅销App》——用iPad进行内容创作
查看>>
《设计模式解析(第2版•修订版)》—第1章复习题
查看>>
《iOS 6核心开发手册(第4版)》——1.14节秘诀:实时触摸反馈
查看>>