PAT甲级 1133 - Splitting A Linked List
2018-03-06 13:56
274 查看
这里可以分成三类,用三个vector保存。第一类是小于0的;第二类是大于0但是小于k的;第三类是大于k的;但我是直接使用sort排序里面的cmp重写做的(注意使用stable_sort就行了)。
#include<bits/stdc++.h> using namespace std; const int maxn=100000+10; int startAddress,n,k; struct node{ int address,data; friend bool operator < (node a,node b){ if(a.data<0 && b.data>=0)return true; if(a.data>=0 && b.data<0)return false; if(a.data>=0 && b.data>=0){ if(a.data>k && b.data<=k)return false; if(a.data<=k && b.data>k)return true; } return false; } }link[maxn],in[maxn]; int main(){ scanf("%d %d %d",&startAddress,&n,&k); int u,v,x; for(int i=0;i<n;++i){ scanf("%d %d %d",&u,&v,&x); in[u].address=x;//address == next in[u].data=v; } int temp = startAddress,pos=0; while(temp!=-1){ link[pos].address=temp; link[pos].data = in[temp].data; temp = in[temp].address; ++pos; } stable_sort(link,link+pos); for(int i=0;i<pos;++i){ if(i!=pos-1) printf("%05d %d %05d\n",link[i].address,link[i].data,link[i+1].address); else printf("%05d %d -1",link[i].address,link[i].data); } return 0; }
相关文章推荐
- 1133. Splitting A Linked List (25)-PAT甲级真题
- PAT甲级 1133. Splitting A Linked List (25)
- PAT 甲级 1133. Splitting A Linked List (25)
- PAT 甲级 1133 Splitting A Linked List
- PAT-1133 Splitting A Linked List(链表分解)
- PAT 1133. Splitting A Linked List (25) 链表的拆分和合并
- PAT (Advanced Level) Practise 1133 Splitting A Linked List (25)
- pat甲级1074. Reversing Linked List (25)、乙级1025. 反转链表 (25)
- 1097. Deduplication on a Linked List (25) PAT甲级
- PAT甲级 1097. Deduplication on a Linked List (25)
- 1133 Splitting A Linked List(25 分)
- 1133. Splitting A Linked List (25)
- 1133. Splitting A Linked List (25)
- 1133. Splitting A Linked List 解析
- 1074. Reversing Linked List (25)-PAT甲级真题
- PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作
- 1133. Splitting A Linked List (25)[链表处理]
- PAT甲级真题及训练集(18)--1097. Deduplication on a Linked List (25)
- 1133. Splitting A Linked List (25)
- PAT 甲级 1074. Reversing Linked List (25)