天梯赛HBU训练营——链表去重 (25分)(测试点2和段错误解决)
给定一个带整数键值的链表 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
之前做过类似的,总之是用数组代替真正的链表结构,比较方便,注意输出,什么时候加空格,什么时候换行,什么时候输出-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和段错误解决)相关推荐
- L2-002 链表去重 (25 分) 船新方法
L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一 ...
- 7-93 链表去重 (25 分)
7-93 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一个链 ...
- 【CCCC】L2-002 链表去重 (25分),,把一个链表拆成两个
problem L2-002 链表去重 (25分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点 ...
- C++学习之路 | PTA(天梯赛)—— L2-007 家庭房产 (25分)(带注释)(并查集)(精简)
L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按 ...
- C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)
L2-010 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他 ...
- C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)
L2-013 红色警报 (25分) 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通, ...
- 天梯赛---7-6 集合相似度 (25分)
7-6 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:Nc/Nt×100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你 ...
- PTA 1025 反转链表 (18/25分) + 测试点解决
PAT (Basic Level) Practice (中文) 1025 反转链表 (25分) 问题1:在进行读出的时候,需要改动next的值 问题2:面对最后指针-1的改变(测试点3.4) 待尝试: ...
- 天梯赛模拟 链表去重 (25 分)
题目: 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一个链表上.例如给定 L 为 2 ...
最新文章
- 【Codeforces】501B Misha and Changing Handles(map)
- WriteFile函数
- linux 内核日志等级,Linux系统中日志级别详情
- LeetCode Algorithm 19. 删除链表的倒数第 N 个结点
- Prototype(原型原型链)
- 配置win2003 server IIS的总结,为什么IIs的工作进程会在空闲时间释放的问题。同时学会了throw的真正含义,throw的真正含义就是导致程序停止,崩溃,很简单,网摘也有记录。...
- Python之网络编程(实现一个多用户同时在线的FTP用户管理程序)
- 关于window.showModalDialog()返回值的学习
- webdriver原理(自己做个记录)
- adb 启动app_app常见性能测试点之响应时间
- AOP和整合mybatis
- 妥妥的世界第一:为什么MT4软件的地位无法撼动?
- 乐符识别matlab,GitHub - Nuullll/music-synthesizer: Homework No.1 for summer course: MATLAB
- 零基础也能快速上手的动画制作工具 | 万彩动画大师
- 文字识别模型MNIST
- 在html table 标签的中background和bgcolor两个属性有什么关系?
- LightOJ-1012-Guilty Prince [DFS]
- android 酷炫倒计时,Hurry - 一个有颜值又好用的倒计时应用 - Android 应用 - 【最美应用】...
- QWidget 半透明窗口解决方案
- 推进浙江创新发展,区块链赋能智慧农业解决方案