PAT 1133. Splitting A Linked List (25) 链表的拆分和合并
2018-01-27 02:06
393 查看
/************************* 题意: 拆分1个链表 把链表划分成 <0 , 0-k , 大于k三个链表(同一链表内相对顺序不变) 并对其进行重新连接。 并输出。 ************************/ /*********************** 解题思路: 搞3个vector,然后收集对应的节点 最后再合并,输出,即可。 *************************/ /*********************** 注意 存无向图时,一定不要遗漏双向的存储!! *********************/ #include<iostream> #include<stdio.h> #include<string> #include<vector> #include<queue> #include<stdlib.h> #include<algorithm> #include<string.h> #include<stack> #include<map> #include<set> #include<unordered_map> using namespace std; #define M 100005 #define INF 0x7ffffff struct Node{ int addr; int Next; int data; }; Node node[M]; int main(){ int n, i, m; int head,k; cin>>head>>n>>k; int s,e,data; while(n--){ scanf("%d%d%d",&s ,&data, &e); node[s].addr = s; node[s].Next = e; node[s].data = data; } vector<Node> v1,v2,v3; int p = head; while(p != -1){ if(node[p].data <0 ) v1.push_back(node[p]); else if(node[p].data <= k) v2.push_back(node[p]); else v3.push_back(node[p]); p = node[p].Next; } v1.insert(v1.end(),v2.begin(),v2.end()); v1.insert(v1.end(),v3.begin(),v3.end()); for(i=0;i<v1.size();i++){ if(i != v1.size()-1) printf("%05d %d %05d\n",v1[i].addr,v1[i].data,v1[i+1].addr); else printf("%05d %d -1\n",v1[i].addr,v1[i].data); } return 0; }
相关文章推荐
- PAT (Advanced Level) Practise 1133 Splitting A Linked List (25)
- PAT 甲级 1133. Splitting A Linked List (25)
- PAT甲级 1133. Splitting A Linked List (25)
- 1133. Splitting A Linked List (25)[链表处理]
- PAT-1133 Splitting A Linked List(链表分解)
- 1133. Splitting A Linked List (25)-PAT甲级真题
- 1133. Splitting A Linked List (25)
- PAT 甲级 1133 Splitting A Linked List
- PAT 1097. Deduplication on a Linked List (25) 剔除链表中的重复节点,set用法,尾插法
- PAT 1074. Reversing Linked List (25)(链表反转)
- PAT甲级 1133 - Splitting A Linked List
- PAT 1041 Linked List Sorting (25)(链表排序)
- 1133. Splitting A Linked List (25)
- PAT (Advanced Level) 1097. Deduplication on a Linked List (25) 链表去重
- PAT 1097. Deduplication on a Linked List (25)(链表问题)(链表分段)
- 1025. 反转链表 (25)PAT乙级&&1074. Reversing Linked List (25)PAT甲级
- PAT - 甲级 - 1074. Reversing Linked List (25)(链表)
- 1133. Splitting A Linked List (25)
- PAT甲题题解-1074. Reversing Linked List (25)-求反向链表
- PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作