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→6,即最后不到 K 个元素不反转。
输入格式:
每个输入包含 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
结尾无空行
#include<stdio.h>
#pragma warning(disable:4996)
typedef struct a {int address;int data;int next;
}lianbiao;
lianbiao orgin[100000], sort[100000];
void nixu(lianbiao arr[], int begin, int end);
int main() {int adr, N, K;scanf("%d%d%d", &adr, &N, &K);for (int cnt = 0; cnt < N; cnt++) {lianbiao temp;scanf("%d%d%d", &temp.address, &temp.data, &temp.next);orgin[temp.address] = temp;}for (int cnt = 0; cnt < N; cnt++) {sort[cnt] = orgin[adr];adr = sort[cnt].next;if (adr == -1) {N = cnt + 1;break;}}/*for (int cnt = 1; K * cnt < N; cnt++) {nixu(sort, K * (cnt - 1), K * cnt-1);}*/for (int cnt = 0; cnt < N / K; cnt++) {for (int cnt1 = 0; cnt1 < K / 2; cnt1++) {lianbiao temp = sort[K * cnt + cnt1];sort[K * cnt + cnt1] = sort[K * cnt + K - 1 - cnt1];sort[K * cnt + K - 1 - cnt1] = temp;}}//for (int i = 0; i < N / K; i++) {//反转的次数 // for (int j = 0; j < K / 2; j++) {//反转 // lianbiao temp;// temp = sort[j + i * K];// sort[j + i * K] = sort[K - 1 - j + i * K];//数组下标确认好 // sort[K - 1 - j + i * K] = temp;// }//}for (int cnt = 0; cnt < N; cnt++) {if (cnt + 1 < N) {sort[cnt].next = sort[cnt + 1].address;printf("%05d %d %05d\n", sort[cnt].address, sort[cnt].data, sort[cnt].next);}else {sort[cnt].next = -1;printf("%05d %d %-d", sort[cnt].address, sort[cnt].data, sort[cnt].next);}}return 0;
}
void nixu(lianbiao arr[], int begin, int end) {if (begin >= end) return;lianbiao temp = arr[begin];arr[begin] = arr[end];arr[end] = temp;nixu(arr, begin+1, end-1);
}
我踩过的坑:
1.这道题逆序不能用递归,我也不知道为什么,我用我原来写的递归函数进行逆序,通不过2,3测试点
2.循环过程中cnt<N/K和K*cnt<N是有区别的,例如当N=5,K=3.两者的循环次数是不一样的
1025 反转链表 (25 分)(c语言)相关推荐
- 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乙级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 ...
- 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 (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分)(最详细最简便)(套路模板)
立志用更少的代码做更高效的表达 给定一个常数 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乙级】1025 反转链表 (25 分)
题目地址 最后一个测试点:不是所有的点都是合法的,有的结点地址是负数. #include<cstdio> #include<iostream> #include<map& ...
最新文章
- solve函数c语言_数值计算方法编程作业(C语言版)汇总
- csdn编辑器模板2
- python简说(二十二)写日志
- php strpos无效,簡單的PHP strpos功能不起作用,為什么?
- urllib、requests库整理
- Python为视频设置遮罩实现异形窗口播放
- 蓝牙音箱项目:记录CSR8635芯片的蓝牙音箱的开发过程
- 一、神经科学的过去,现在,未来
- 支付宝支付--沙箱支付教程+案例 | PC端网站支付(超级详细版本)
- 苹果快捷键怎么调出来_iPhone手机没有声音怎么办?
- Python爬虫数据存储不同格式在excel表中通用代码
- Aspose.Words利用Word模板导出Word文档
- Asp.Net之分页查询
- NanoPi-K2 控制GPIO
- A*搜索算法AStar_BFS
- 视图框架自定义和坐标说明
- android系统手机流量控制方法,如何实现Android手机流量的控制
- 单片机的两个外围电路:复位电路和时钟电路
- 1.8正版生存服务器,我的世界1.8纯净版
- 三菱a系列motion软体_沧州三菱MR-J4-350B
热门文章
- Java黑皮书课后题第5章:*5.16(找出一个整数的因子)编写程序,读入一个整数,然后以升序显示它的所有最小因子。例如,若输入的整数是120,那么输出就应该是:2、2、2、3、5
- android菜单点击功能怎么做的,单击android中的Menu按钮打开上下文菜单
- Spring mvc中自定义拦截器
- 转: MinGw离线安装方法集合
- 复杂链表的复制(递归的两种实现方式)
- BootstrapTable(附源码) Bootstrap结合BootstrapTable的使用,分为两种模试显示列表。...
- POJ 1753 Flip Game (黑白棋) (状态压缩+BFS)
- Linq to SQL学习
- 23.2.3 高速缓存依赖性(1)
- python 更改输出的颜色_python 输出指定的颜色