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

输入格式:
输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤10​5,为结点总数)。一个结点的地址是非负的 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

之前做过类似的,总之是用数组代替真正的链表结构,比较方便,注意输出,什么时候加空格,什么时候换行,什么时候输出-1。关于测试点2,是要判断是否存在被删除的链表(即该链表是否为空,是否有数据,所以来个if(len2)),段错误基本就是数组开的不够大(或者你访问时下标越界了),这个要细看题意,哪个是104,哪个是105
#include <iostream>
#include <cmath>
using namespace std;
int res1[100001],res2[100001];
bool flag[10001] = {false};struct node{int data;int next;
}lis[100001];int main(){ios::sync_with_stdio(false);int head,n;int add;cin >> head >> n;for(int i = 0;i<n;i++){cin >> add;cin >> lis[add].data >> lis[add].next;}int len1 = 0,len2 = 0;//注意i的变化,因为i是地址,所以是lis[i].nextfor(int i = head;i!=-1;i=lis[i].next){int a = abs(lis[i].data);if(!flag[a]){flag[a] = true;res1[len1++] = i;}else{res2[len2++] = i;}}printf("%05d %d",res1[0],lis[res1[0]].data);for(int i = 1;i<len1;i++){printf(" %05d\n%05d %d",res1[i],res1[i],lis[res1[i]].data);}printf(" -1\n");if(len2){printf("%05d %d",res2[0],lis[res2[0]].data);for(int i = 1;i<len2;i++){printf(" %05d\n%05d %d",res2[i],res2[i],lis[res2[i]].data);}printf(" -1\n");}return 0;
}

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

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

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

  2. 7-93 链表去重 (25 分)

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

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

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

  4. C++学习之路 | PTA(天梯赛)—— L2-007 家庭房产 (25分)(带注释)(并查集)(精简)

    L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按 ...

  5. C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)

    L2-010 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他 ...

  6. C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)

    L2-013 红色警报 (25分) 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通, ...

  7. 天梯赛---7-6 集合相似度 (25分)

    7-6 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N​c​​/N​t​​×100%.其中N​c​​是两个集合都有的不相等整数的个数,N​t​​是两个集合一共有的不相等整数的个数.你 ...

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

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

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

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

最新文章

  1. 【Codeforces】501B Misha and Changing Handles(map)
  2. WriteFile函数
  3. linux 内核日志等级,Linux系统中日志级别详情
  4. LeetCode Algorithm 19. 删除链表的倒数第 N 个结点
  5. Prototype(原型原型链)
  6. 配置win2003 server IIS的总结,为什么IIs的工作进程会在空闲时间释放的问题。同时学会了throw的真正含义,throw的真正含义就是导致程序停止,崩溃,很简单,网摘也有记录。...
  7. Python之网络编程(实现一个多用户同时在线的FTP用户管理程序)
  8. 关于window.showModalDialog()返回值的学习
  9. webdriver原理(自己做个记录)
  10. adb 启动app_app常见性能测试点之响应时间
  11. AOP和整合mybatis
  12. 妥妥的世界第一:为什么MT4软件的地位无法撼动?
  13. 乐符识别matlab,GitHub - Nuullll/music-synthesizer: Homework No.1 for summer course: MATLAB
  14. 零基础也能快速上手的动画制作工具 | 万彩动画大师
  15. 文字识别模型MNIST
  16. 在html table 标签的中background和bgcolor两个属性有什么关系?
  17. LightOJ-1012-Guilty Prince [DFS]
  18. android 酷炫倒计时,Hurry - 一个有颜值又好用的倒计时应用 - Android 应用 - 【最美应用】...
  19. QWidget 半透明窗口解决方案
  20. 推进浙江创新发展,区块链赋能智慧农业解决方案

热门文章

  1. 永恒之蓝ms17_010漏洞复现
  2. 华容道html源码,华容道(项目源代码)
  3. 15数字华容道解法 图解_数字华容道最后一行技巧 数字华容道教学步骤
  4. mysql:查询排名
  5. echarts首次加载不显示,再次刷新照常显示
  6. MyBatis12 结果集映射
  7. python批量将excel转成pdf_Python:将PDF转成Excel
  8. SD卡提示格式化后怎么办?可尝试这种数据恢复方法快速找回!
  9. 本周的数据可视化学习以及个人最近总结
  10. 元宇宙赔掉底裤?Meta 13个月「烧完」50个白宫