7-93 链表去重 (25 分)

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

输入格式:

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

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

地址 键值 下一个结点

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

输出格式:

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

输入样例:

00100 5
99999 -7 87654
23854 -15 00000
87654 15 -1
00000 -15 99999
00100 21 23854

输出样例:

00100 21 23854
23854 -15 99999
99999 -7 -1
00000 -15 87654
87654 15 -1
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
struct ll{int data;int next;
}List[N];
int pre[N] ,post[N] ,r1 ,r2 ,head ,n ,loc ,key[N];
int main(){cin >> head >> n;while (n--) {cin >> loc;cin >> List[loc].data >> List[loc].next;}while (head != -1) {if (key[abs(List[head].data)]) {post[r2++] = head;post[r2] = -1;head = List[head].next;}else{key[abs(List[head].data)] = 1;pre[r1++] = head;pre[r1] = -1;head = List[head].next;}}for (int i = 0; i < r1; i++) {if (pre[i + 1] != -1) printf("%05d %d %05d\n" ,pre[i] ,List[pre[i]].data ,pre[i + 1]);elseprintf("%05d %d -1\n" ,pre[i] ,List[pre[i]].data );}for (int i = 0; i < r2; i++) {if (post[i + 1] != -1) printf("%05d %d %05d\n" ,post[i] ,List[post[i]].data ,post[i + 1]);elseprintf("%05d %d -1\n" ,post[i] ,List[post[i]].data );}return 0;
}

7-93 链表去重 (25 分)相关推荐

  1. L2-002 链表去重 (25 分) 船新方法

    L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一 ...

  2. 【CCCC】L2-002 链表去重 (25分),,把一个链表拆成两个

    problem L2-002 链表去重 (25分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点 ...

  3. 天梯赛模拟 链表去重 (25 分)

    题目: 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一个链表上.例如给定 L 为 2 ...

  4. 天梯赛HBU训练营——链表去重 (25分)(测试点2和段错误解决)

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

  5. PTA 1025 反转链表 (18/25分) + 测试点解决

    PAT (Basic Level) Practice (中文) 1025 反转链表 (25分) 问题1:在进行读出的时候,需要改动next的值 问题2:面对最后指针-1的改变(测试点3.4) 待尝试: ...

  6. 1025 反转链表 (25 分

    给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则输出应该 ...

  7. 【PTA】7-2 单链表基本操作 (25 分)

    请编写程序实现单链表插入.删除结点等基本算法.给定一个单链表和一系列插入.删除结点的操作序列,输出实施上述操作后的链表.单链表数据域值为整数. 输入格式: 输入第1行为1个正整数n,表示当前单链表长度 ...

  8. 【区块反转】【链表合并】【反转链表】【链表元素分类】【链表去重】【重排链表】

    目录 说明: 1110 区块反转 输入格式: 输出格式: 输入样例: 输出样例: 1105 链表合并 输入格式: 输出格式: 输入样例: 输出样例: 1025 反转链表 输入格式: 输出格式: 输入样 ...

  9. C++学习之路 | PTA乙级—— 1075 链表元素分类 (25 分)(精简)

    1075 链表元素分类 (25 分) 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面.但每一类内部元 ...

最新文章

  1. 密恐警告:超2000万张,全球最大的人眼图像数据集开源了
  2. python turtle 画风轮
  3. nginx 允许跨域_细谈跨域请求的桥梁
  4. Java程序员需要掌握的计算机底层知识(一):CPU基本组成、指令乱序执行、合并写技术、非同一访问内存 NUMA
  5. AD制图相关问题总结
  6. python正弦波和等腰三角波_正弦波脉宽调制(SPWM)原理
  7. Java实现Oracle数据库导入
  8. 嵌入式Linux开发简介
  9. 怎么设计一种雷达成像系统代码_光纤阵列成像激光雷达系统的设计
  10. java 坐标反算_Java实现坐标反算方位角
  11. 计算机 桌面显示桌面图标不见了,显示桌面图标不见了怎么办,小编教你电脑显示桌面图标不见了怎么解决...
  12. 《大学之路》读后感(1)
  13. springboot基于web的摩托车销售系统的设计与实现毕业设计源码031706
  14. [4G5G专题-79]:流程 - 4G LTE 寻呼流程Paging
  15. 分析一种简单的提高功率因数的电路——填谷电路
  16. 史上最简萤石云视频显示开发教程(pc端)
  17. 图像透视投影变换 四边形——标准矩形
  18. JavaScript笔记 var e=e||window.event
  19. 商城项目14_商品新增vo抽取、修改vo、新增逻辑、代码的具体落地、SPU检测、SKU检测、流程图
  20. 常用粤语字即输入方法

热门文章

  1. 2017下半年网络规划设计师考试上午真题
  2. 大一计算机考试题库知识点,大一 计算机基础 期末考试题库
  3. 计算机能帮助我学英语翻译,英语翻译以下几个句子,帮忙把汉语翻译成英语,请不要用软件翻!1、计算机能帮助人们从事复杂的计算.几十年前可能需要数月完成...
  4. 「雕爷学编程」Arduino动手做(24)——水位传感器模块
  5. 使用Python音频双通道分离
  6. SVN遇到Can't convert string from 'UTF-8' to native encoding(转)
  7. windows Ctrl + Alt + 方向键 取消屏幕反转
  8. redis 介绍和常用命令
  9. 补发《超级迷宫》站立会议九
  10. 菜鸟ING的博客终于开园了。