PAT L2-002 链表去重
2018-03-22 22:40
344 查看
PAT-L2-002-链表去重
给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点。即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留。同时,所有被删除的结点必须被保存在另外一个链表中。例如:另L为21→-15→-15→-7→15,则你必须输出去重后的链表21→-15→-7、以及被删除的链表-15→15。输入格式:
输入第一行包含链表第一个结点的地址、以及结点个数N(<= 105 的正整数)。结点地址是一个非负的5位整数,NULL指针用-1表示。
随后N行,每行按下列格式给出一个结点的信息:
Address Key Next
其中Address是结点的地址,Key是绝对值不超过104的整数,Next是下一个结点的地址。
输出格式:
首先输出去重后的链表,然后输出被删除结点组成的链表。每个结点占一行,按输入的格式输出。
输入样例:
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
利用数组+结构体建立静态链表
从root开始出发,像遍历链式前向星一样,在遍历的同时,记录节点的key的绝对值是否出现过,把第一次出现就把对应的下标(也就是前驱结点)和第二次出现的下标记录下来。最后分别循环输出即可。注意输出格式。
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <cstdlib> #include <vector> #include <map> #include <set> #include <stack> #include <queue> #include <bitset> using namespace std; const int maxn = 1e5+5; struct node{ int key; int next; }a[maxn]; vector<int>v1,v2; int vis[maxn]; int main(int argc, char *argv[]){ int root,n; cin>>root>>n; for(int i=0;i<n;i++){ int x; cin>>x; cin>>a[x].key>>a[x].next; } for(int i=root;i!=-1;i = a[i].next){ if(vis[abs(a[i].key)]){ v2.push_back(i); } else { v1.push_back(i); vis[abs(a[i].key)] = 1; } } int l1 = v1.size(),l2 = v2.size(); for(int i=0;i<l1-1;i++){ printf("%05d %d %05d\n",v1[i],a[v1[i]].key,v1[i+1]); } if(l1>=1) printf("%05d %d -1\n",v1[l1-1],a[v1[l1-1]].key); for(int i=0;i<l2-1;i++){ printf("%05d %d %05d\n",v2[i],a[v2[i]].key,v2[i+1]); } if(l2>=1) printf("%05d %d -1\n",v2[l2-1],a[v2[l2-1]].key); return 0; }
相关文章推荐
- PAT L2-002 链表去重
- L2-002. 链表去重-PAT团体程序设计天梯赛GPLT
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT天梯赛 L2-002. 链表去重 【STL】
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT 天梯赛 L2-002 链表去重
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT 团体天梯赛 L2-002. 链表去重
- PAT L2-002. 链表去重 巧妙利用数组的索引
- 4000 PAT-L2-002. 链表去重(模拟)
- PAT L2-002 链表去重
- PAT L2-002. 链表去重 模拟
- PAT - 天梯赛 L2-002 链表去重
- pat 团体天梯赛 L2-002. 链表去重
- PAT ~ L2-002. 链表去重 (思路 + 模拟)