PAT L2-002 链表去重
2017-04-14 08:49
274 查看
题目链接:PAT L2-002 链表去重
题意:
让你将一个链表按绝对值去重
题解;
模拟一下就行,注意输出格式,地址要用%05d。
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 5 const int N=1e5+7; 6 struct dt 7 { 8 int data,nxt; 9 }a[N*10]; 10 int hsh ; 11 int main() 12 { 13 int head,n; 14 scanf("%d%d",&head,&n); 15 F(i,1,n) 16 { 17 int hd,data,nxt; 18 scanf("%d%d%d",&hd,&data,&nxt); 19 a[hd].data=data,a[hd].nxt=nxt; 20 } 21 int second_head=-1,now=-1,pre=-1; 22 for(int i=head;~i;i=a[i].nxt) 23 { 24 if(hsh[abs(a[i].data)]) 25 { 26 if(second_head==-1) 27 { 28 second_head=i; 29 now=i; 30 }else 31 { 32 a[now].nxt=i; 33 now=i; 34 } 35 }else 36 { 37 hsh[abs(a[i].data)]=1; 38 if(pre!=-1) 39 { 40 a[pre].nxt=i; 41 } 42 pre=i; 43 } 44 } 45 a[pre].nxt=-1; 46 a[now].nxt=-1; 47 for(int i=head;~i;i=a[i].nxt) 48 { 49 printf("%05d %d ",i,a[i].data); 50 if(a[i].nxt==-1)puts("-1"); 51 else printf("%05d\n",a[i].nxt); 52 } 53 for(int i=second_head;~i;i=a[i].nxt) 54 { 55 printf("%05d %d ",i,a[i].data); 56 if(a[i].nxt==-1)puts("-1"); 57 else printf("%05d\n",a[i].nxt); 58 } 59 return 0; 60 }View Code
相关文章推荐
- 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 链表去重
- pat 团体天梯赛 L2-002. 链表去重
- PAT天梯赛 L2-002. 链表去重 【STL】
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重 巧妙利用数组的索引
- L2-002. 链表去重-PAT团体程序设计天梯赛GPLT
- 4000 PAT-L2-002. 链表去重(模拟)
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT L2-002. 链表去重 巧妙利用数组的索引