1025 反转链表 (25 分
给定一个常数 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 (≤)、以及正整数 K (≤),即要求反转的子链结点的个数。结点的地址是 5 位非负整数,NULL 地址用 − 表示。
接下来有 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
#include<cstdio> #include<algorithm> using namespace std; const int maxn = 100100; struct Node{int address,data,next;int order; }node[maxn];bool cmp(Node a,Node b){if(a.order == -1 || b.order == -1){return a.order > b.order;}else return a.order < b.order; }int main(){for(int i = 0; i < maxn; i++) node[i].order = -1;int n,k,begin,address;scanf("%d%d%d",&begin,&n,&k);for(int i = 0; i < n; i++){scanf("%d",&address);scanf("%d%d",&node[address].data,&node[address].next);node[address].address = address;}int p = begin,count = 0;while(p != -1){node[p].order = count++;p = node[p].next;}sort(node,node+maxn,cmp);n = count;for(int i = 0; i < n/k; i++){for(int j = (i+1)*k - 1; j > i*k; j--){printf("%05d %d %05d\n",node[j].address,node[j].data,node[j-1].address);}printf("%05d %d ",node[i*k].address,node[i*k].data);if(i < n/k - 1) printf("%05d\n",node[(i+2)*k-1].address);else{if(n%k == 0) printf("-1");else{printf("%05d\n",node[(i+1)*k].address);for(int i = n/k*k; i < n; i++){printf("%05d %d ",node[i].address,node[i].data);if(i < n - 1) printf("%05d\n",node[i+1].address);else printf("-1");}}}}return 0; }
转载于:https://www.cnblogs.com/wanghao-boke/p/10222760.html
1025 反转链表 (25 分相关推荐
- PAT乙级1025反转链表 25(分)
1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为3→2→1→6→5→ ...
- PAT | 1025 反转链表 (25分)【超时问题 + 柳神代码】
1025 反转链表 (25分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→ ...
- 1025 反转链表 (25 分)
1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5 ...
- c语言最大字符1025,1025 反转链表 (25 分)C语言
题目描述 给定一个常数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 ...
- 【PAT (Basic Level) 】1025 反转链表 (25 分)
给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则输出应该 ...
- 1025 反转链表 (25 分)(c语言)
给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则输出应该 ...
- 1025 反转链表 (25分)(最详细最简便)(套路模板)
立志用更少的代码做更高效的表达 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→ ...
- 1025 反转链表 (25分)
输入样例: 00100 6 4 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 68237 12309 2 33218 输出样 ...
- PAT乙级|C语言|1025 反转链表 (25分)
题目 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则输 ...
- 【PAT乙级】1025 反转链表 (25 分)
题目地址 最后一个测试点:不是所有的点都是合法的,有的结点地址是负数. #include<cstdio> #include<iostream> #include<map& ...
最新文章
- 在线作图|如何绘制一个好看的堆叠柱状图
- PreparedStatement和CallableStatement都可以调用存储过程
- c语言 字符串 if,C语言用if(strstr(s1,s2))判断字符串是否存在子字符串,无论有没有都会进入到if里是怎么回事?...
- Session 的钝化与活化
- 面向对象写选项卡、拖拽
- ubuntu 14.04 LTS(64bit) Anaconda2 + Theano(1.0.2) + Keras安装
- X大佬:建议被降级降薪员工主动辞职,网友炸了
- 有人问我:Linux下命令行里 password:的时候 用键盘密码打不了
- userService 用户 会员 系统设计 v2 q224 .doc
- tomcat 7服务器跨域问题解决
- gensler逻辑学导论_学逻辑学,哪本书入门合适?
- 项目管理表格模板/实用表格-需求
- 给txt格式的文档增加目录
- 漫谈运维:半神半仙亦民工
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 7
- 2018年互联网技术岗(数据分析)暑期实习面试经验
- docker白话版(一)简介+使用命令
- 《C语言入门指南》合集版,学习c语言有这一篇就够了?
- Android QQ空间(Apad)项目总结(三)---应用UI框架的搭建!!!
- 基于AIE的贵阳市两湖一库水体区域识别
热门文章
- nginx资源定向 css js路径问题
- 对多个WCF服务进行统一的连接测试
- 初来乍到!各位博客朋友多多支持!
- 公众平台模板消息所在行业_第三方工具微信公众号模板消息群发如何操作?
- opencv 多线程加速_线程池给你写好了,想加速拿来用就行哈
- java 切面 不执行,解决springboot的aop切面不起作用问题(失效的排查)
- dart服务器开发性能,DartVM服务器开发(第四天)--代码优化
- 西瓜创客python编程进阶收费_西瓜创客和编程猫有什么不同?哪个更值得报名?...
- CUDA: OpenCV requires enabled ‘cudev‘ module from ‘opencv_contrib
- python列表总结