1025. 反转链表 (25)
2015-10-29 10:29
260 查看
给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。
输入格式:
每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。
接下来有N行,每行格式为:
Address Data Next
其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。
输出格式:
对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。
输入样例:
输出样例:
输入格式:
每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。
接下来有N行,每行格式为:
Address Data Next
其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。
输出格式:
对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。
输入样例:
00100 6 4 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 68237 12309 2 33218
输出样例:
00000 4 33218 33218 3 12309 12309 2 00100 00100 1 99999 99999 5 68237 68237 6 -1 --------------华丽的分割线------------- 分析:定义三个大数组,第一个用来输入数据,第二个用来保存原始顺序的链表,第三个用来保存翻转后的链表。题目有个陷阱,就是输入的N个节点不一定都在这个链表上 代码:#include <stdio.h> #define Maxn 100002 typedef struct { int Address; int Data; int Next; }Node; Node list[Maxn]; Node temp[Maxn]; Node result[Maxn]; int main(void) { int header,N,K; int i,j,num=0; int index = 0; int address,data,next; scanf("%d %d %d",&header,&N,&K); for(i=0;i<N;++i) { scanf("%d %d %d",&address,&data,&next); list[address].Address = address; list[address].Data = data; list[address].Next = next; } while(header!=-1) { temp[num++] = list[header]; header = list[header].Next; } j = K-1; while(j<num) { for(i=j;i>(j-K);--i) { result[index++] = temp[i]; } j = j+K; } for(i=(j-K+1);i<num;++i) result[i] = temp[i]; for(i=0;i<num;++i) { printf("%05d %d",result[i].Address,result[i].Data); if(i!=(num-1)) printf(" %05d\n",result[i+1].Address); else printf(" -1"); } return 0; }
相关文章推荐
- sql语句
- adb logcat命令查看并过滤android输出log
- django.contirb.auth-认证
- VSC++代码智能提示——Visual Assist X
- sql select 如何定义自增列?
- ListView OnItemClickListener点击事件
- hadoop学习笔记之<用eclipse开发>
- 判断2个对象数组是否相同
- iOS7之定制View Controller切换效果
- jQuery中的$(window).load()与$(document).ready()
- 动态规划——砝码称重
- Java线程之CompletionService
- ORA-00845: MEMORY_TARGET not supported on this system
- 5-19 求链式线性表的倒数第K项 (20分)
- 创业公司工程师应该掌握的可伸缩Web开发技术
- 代理设计模式(小明找房子)
- 【JQ同胞遍历】
- charles抓包
- TortoiseSVN中分支和合并
- 求连续子数组的最大和