给定一个单链表 LL,链表上的每个节点都存有一个键值,你应该删掉其中拥有重复键值绝对值的节点。

也就是说,对于每个值 KK,只保留键值或键值绝对值为 KK 的第一个节点。

同时,被删掉的节点也应保存在一个单独的链表中。

例如,给定 LL 为 21→-15→-15→-7→15,则删除重复数据后的链表为 21→-15→-7,已删除链表为 -15→15。

输入格式
第一行首先包含头节点地址,然后包含节点总数 NN。

节点地址用一个 55 位非负整数表示(可能有前导 00),NULL 用 −1−1 表示。

接下来 NN 行,每行描述一个节点的信息,格式如下:

Address Key Next
其中 Address 是节点地址,Key 是一个整数表示键值,Next 是下一个节点的地址。

输出格式
首先按顺序输出结果链表,然后按顺序输出删除链表。

每个节点占一行,格式与输入相同。

数据范围
1≤N≤1051≤N≤105,
节点键值的绝对值不会超过 104104。

输入样例:
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=100010;
int e[N],ne[N];
bool flag[N];
int main(){int h,n;cin>>h>>n;while(n--){int address,data,next;cin>>address>>data>>next;e[address]=data;ne[address]=next;}//存地址vector<int>a;vector<int>b;for(int i=h;i!=-1;i=ne[i]){if(flag[abs(e[i])]){b.push_back(i);}else{a.push_back(i);flag[abs(e[i])]=true;}
}for(int i=0;i<a.size();i++){printf("%05d %d ",a[i],e[a[i]]);if(i==a.size()-1)puts("-1");else printf("%05d\n",a[i+1]);}for(int i=0;i<b.size();i++){printf("%05d %d ",b[i],e[b[i]]);if(i==b.size()-1)puts("-1");else printf("%05d\n",b[i+1]);}return 0;
}

PAT甲级真题1097 链表重复数据删除(简单解法)相关推荐

  1. PAT甲级真题目录(按题型整理)(转自柳神)

    转载自:https://www.liuchuo.net/archives/2502?tdsourcetag=s_pcqq_aiomsg 最短路径 1003. Emergency (25)-PAT甲级真 ...

  2. PAT甲级真题 1018 A+B in Hogwarts--python解法

    PAT甲级真题 1018 A+B in Hogwarts 提交:2638 通过:1559 通过率:59% If you are a fan of Harry Potter, you would kno ...

  3. 【题解】【AcWing】1587. 链表重复数据删除

    1587. 链表重复数据删除 原题传送:AcWing 1587. 链表重复数据删除 给定一个单链表 LLL ,链表上的每个节点都存有一个键值,你应该删掉其中拥有重复键值绝对值的节点. 也就是说,对于每 ...

  4. 【PAT甲级真题整理五】1121~1155

    终于考完了qaq把最后一堆也整理出来了 目录 1121 Damn Single(25)set.map的使用 1122 Hamiltonian Cycle(25)哈密顿回路 1123 Is It a C ...

  5. 【PAT甲级真题整理三】1061~1090

    目录 1061 Dating(20)字符串处理 1062 Talent and Virtue(25)排序 1063 Set Similarity(25)set的使用 1064 Complete Bin ...

  6. 「PAT甲级真题解析」Advanced Level 1009 Product of Polynomials

    PAT (Advanced Level) Practice 1009 Product of Polynomials 如果对你有帮助,要点个赞让我知道喔~ 文章目录 问题分析 完整步骤描述 伪代码描述 ...

  7. PAT甲级真题 1011 World Cup Betting (20分) C++实现

    题目 With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly exc ...

  8. PAT乙级真题 1075 链表元素分类 C++实现(测试点5:用map会超时)

    题目 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面.但每一类内部元素的顺序是不能改变的.例如:给定 ...

  9. 1131. Subway Map (30)-PAT甲级真题 (DFS or 堆优化dij or SPFA)

    题意 给出地铁线路数n,分别给出每条线的站点数m,再依次列出站点id.然后询问k次从启点sv到终点ev的最短路径,如果最短路径相同,要求换乘最少的路径.最后按条件输出. 思路 1.用unordered ...

  10. PAT甲级真题1069 数字黑洞(巧妙解法)

    对于任何各位数字不完全相同的四位整数,我们将该数字的四个数位按非升序排列,得到一个数字,再按非降序排列,得到另一个数字,将两个数字相减就能得到一个新的数字. 不断重复这个过程,我们就能得到数字6174 ...

最新文章

  1. java 类的存储结构设计_Doris存储层设计介绍1——存储结构设计解析
  2. 数据蒋堂 | JOIN运算剖析
  3. 谈谈 Mifare Classic 破解
  4. Timer的缺陷 用ScheduledExecutorService替代
  5. c语言程序设计运用,清华大学出版社-图书详情-《C语言程序设计及应用教程》...
  6. 现在银行etl还要做拉链表吗_hive 拉链表 实现全量数据 增量更新
  7. VMware安装kali linux 和中文汉化方法
  8. 【Vue】一个案例带你搞懂methods、watch及computed的使用规则
  9. Python 中xrange和range区别
  10. java 语法 —— 数组
  11. 观点:比特币新一轮突破“即将到来”
  12. 如何将Noteepad++每一行都添加一个逗号
  13. 信息隐藏与数字水印实验4-LSB信息隐藏的卡方分析
  14. 威廉玛丽学院计算机专业好吗,威廉玛丽学院计算机
  15. HTML12张图片魔方,纯CSS3 实现3D魔方
  16. 啤酒和尿布:一文看懂关联规则
  17. 【ONE·C || 初识C语言 】
  18. java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署
  19. cdd 变分 图像修复 matlab,图像修复中的TV模型
  20. 在线教育巨头多邻国Duolingo入华一周年,中国市场马力全开

热门文章

  1. 一款免费好用的在线高效作图工具
  2. SE11字段过多时怎么快速建表
  3. 人人都能看懂——c大调d大调f…
  4. mysql 唯一记录_在数据库中能够唯一地标识一个记录被称为 MySQL数据库使用教程...
  5. win10相机打不开,显示错误代码0xA00F4246(0x800706D9)
  6. 政府12345便民服务热线 -- MICC全媒体智能呼叫中心建设方案
  7. 人脸识别活体检测的一些方法
  8. java商品管理系统黑马_JavaEE基础班 水果超市管理系统
  9. php投影,投影效果怎么做?PS制作逼真的投影效果
  10. (分层图)洛谷P4568[JLOI2011]飞行路线