02-线性结构3 Reversing Linked List (25分)
来源:互联网 发布:seo免费学习网 编辑:程序博客网 时间:2024/06/05 17:03
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; if K=4, you must output 4→3→2→1→5→6.
Input Specification:
Each input file contains one test case. For each case, the first line contains the address of the first node, a positive N (≤105) which is the total number of nodes, and a positive K (≤N) which is the length of the sublist to be reversed. The address of a node is a 5-digit nonnegative integer, and NULL is represented by -1.
Then N lines follow, each describes a node in the format:
Address Data Next
where Address
is the position of the node, Data
is an integer, and Next
is the position of the next node.
Output Specification:
For each case, output the resulting ordered linked list. Each node occupies a line, and is printed in the same format as in the input.
Sample Input:
00100 6 400000 4 9999900100 1 1230968237 6 -133218 3 0000099999 5 6823712309 2 33218
Sample Output:
00000 4 3321833218 3 1230912309 2 0010000100 1 9999999999 5 68237
68237 6 -1
这题花了一点时间,但是并不难,第一要注意有可能不是所有的节点都要用到,所以有可能最后输出小于给出的节点。后来想到可以用reverse直接做的,然后下个节点的地址也可以不用存储,最后再输出。这个代码很粗糙,下次再来优化。
#include<iostream>#include<cstdio>using namespace std;struct node{int address;int key;int next;}a[100005],b[100005],c[100005];int main(){int ad;int m,n;cin>>ad>>n>>m;for(int i=0;i<n;i++){node A;cin>>A.address>>A.key>>A.next;a[A.address]=A;}int k=1;long temp=ad;while(a[temp].next!=-1){b[k++].address=temp;b[k-1].key=a[temp].key;b[k-1].next=a[temp].next;temp=a[temp].next;}b[k].address=a[temp].address;b[k].key=a[temp].key;b[k].next=-1;int t=0;int i;for(i=1;i*m<=k;i++){for(int j=i*m;j>(i-1)*m;j--){c[t++].address=b[j].address;c[t-1].key=b[j].key;}}for(int j=(i-1)*m+1;j<=k;j++){c[t++].address=b[j].address;c[t-1].key=b[j].key;} for(int q=0;q<k-1;q++){c[q].next=c[q+1].address;}c[k-1].next=-1;for(int q=0;q<k-1;q++){printf("%05ld %d %05ld\n",c[q].address,c[q].key,c[q].next);}printf("%05ld %d %d\n",c[k-1].address,c[k-1].key,-1);return 0;}
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- [pta]02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List(25 分)
- 02-线性结构2 Reversing Linked List (25分)
- 02-线性结构3 Reversing Linked List
- 02-线性结构3 Reversing Linked List
- 02-线性结构3 Reversing Linked List
- 02-线性结构3 Reversing Linked List (25分)
- PAT数据结构_02-线性结构3 Reversing Linked List (25分)
- 02-线性结构2 Reversing Linked List
- Amaze UI Web 与 Amaze UI Touch 有什么不同
- Java8学习笔记之新日期API
- 深入理解 Android 卷I
- 一个小细节引起的悲剧——线程执行顺序错误
- 《近匠》专访启明星辰安全研究中心副总监侯浩俊——物联网安全攻防的“线上幽灵”
- 02-线性结构3 Reversing Linked List (25分)
- AWS Account
- 解决Hash冲突的几种方法
- CentOS 7下安装Redmine中文版图文教程
- 使用JobControl管理mapreduce多job依赖
- Android与H5界面的交互(参数互传)以及遇到的一些问题
- ES6数组扩展
- Swift3的Dictionary和OC的NSDictionary关系
- 如何查看linux内核版本