天梯赛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 ...
最新文章
- 浅谈SpringMVC执行过程
- PHP算法使用__call优化代码
- 2014年第五届蓝桥杯C/C++ A组国赛 —— 第三题:日期差
- centos在线安装mysql
- BZOJ[1051]受欢迎的牛
- 面试整理(1):原生ajax
- 上海1.3万座玻璃幕墙建筑“一网统管”
- 系统架构工作笔记-数据展示进程与读取数据进程分离,实现低耦合(展示软件可适用任意厂家数据库)
- Bookmarklet
- java工作笔记017---java8新特性_使用lamda表达式进行List分组_排序_去重_随时更新
- 基于MSP430f5529的红外循迹小车
- 用户故事拆分与MFQ
- 笔记--左耳朵耗子叔的成长经历
- 安卓开发之路----转自任玉刚大神
- Halcon 汉字识别
- protocol buffer生成C语言的实现
- 关于Android中的画笔画画
- 每日一课 | 如何用Python编写一个Lisp解释器
- 校园失物招领系统,失物招领系统,校园失物招领管理系统毕设作品
- 计算机主机配置有哪些,组装电脑配置推荐有哪些
热门文章
- Sky光遇云野光之翼在哪获得
- 如何让虚拟角色自然融入现实?
- 焦炉集气管压力模糊控制(三输入单输出)
- android界面UI美化:沉浸模式、全透明或半透明状态栏及导航栏的实现
- 实验6-4 单词首字母大写 (15 分)
- CAD导出PDF线条很粗怎样设置?
- 数据分析系列 之3σ规则/依据拉依达准则来剔除异常值
- 这三个文件在 C:\Program Files (x86)\Microsoft Office\root\Office16 下怎么会是符号链接?
- P1162 填图颜色 洛谷(BFS的简单应用)
- 极客日报第 39 期:小米 11 不送充电器;阿里达摩院 2021 十大科技趋势发布!