给定一个常数 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语言)相关推荐

  1. 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 ...

  2. PAT乙级1025反转链表 25(分)

    1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为3→2→1→6→5→ ...

  3. PAT | 1025 反转链表 (25分)【超时问题 + 柳神代码】

    1025 反转链表 (25分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→ ...

  4. 1025 反转链表 (25 分)

    1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5 ...

  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,则输 ...

  6. 【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,则输出应该 ...

  7. 1025 反转链表 (25分)(最详细最简便)(套路模板)

    立志用更少的代码做更高效的表达 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→ ...

  8. 1025 反转链表 (25分)

    输入样例: 00100 6 4 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 68237 12309 2 33218 输出样 ...

  9. 【PAT乙级】1025 反转链表 (25 分)

    题目地址 最后一个测试点:不是所有的点都是合法的,有的结点地址是负数. #include<cstdio> #include<iostream> #include<map& ...

最新文章

  1. solve函数c语言_数值计算方法编程作业(C语言版)汇总
  2. csdn编辑器模板2
  3. python简说(二十二)写日志
  4. php strpos无效,簡單的PHP strpos功能不起作用,為什么?
  5. urllib、requests库整理
  6. Python为视频设置遮罩实现异形窗口播放
  7. 蓝牙音箱项目:记录CSR8635芯片的蓝牙音箱的开发过程
  8. 一、神经科学的过去,现在,未来
  9. 支付宝支付--沙箱支付教程+案例 | PC端网站支付(超级详细版本)
  10. 苹果快捷键怎么调出来_iPhone手机没有声音怎么办?
  11. Python爬虫数据存储不同格式在excel表中通用代码
  12. Aspose.Words利用Word模板导出Word文档
  13. Asp.Net之分页查询
  14. NanoPi-K2 控制GPIO
  15. A*搜索算法AStar_BFS
  16. 视图框架自定义和坐标说明
  17. android系统手机流量控制方法,如何实现Android手机流量的控制
  18. 单片机的两个外围电路:复位电路和时钟电路
  19. 1.8正版生存服务器,我的世界1.8纯净版
  20. 三菱a系列motion软体_沧州三菱MR-J4-350B

热门文章

  1. Java黑皮书课后题第5章:*5.16(找出一个整数的因子)编写程序,读入一个整数,然后以升序显示它的所有最小因子。例如,若输入的整数是120,那么输出就应该是:2、2、2、3、5
  2. android菜单点击功能怎么做的,单击android中的Menu按钮打开上下文菜单
  3. Spring mvc中自定义拦截器
  4. 转: MinGw离线安装方法集合
  5. 复杂链表的复制(递归的两种实现方式)
  6. BootstrapTable(附源码) Bootstrap结合BootstrapTable的使用,分为两种模试显示列表。...
  7. POJ 1753 Flip Game (黑白棋) (状态压缩+BFS)
  8. Linq to SQL学习
  9. 23.2.3 高速缓存依赖性(1)
  10. python 更改输出的颜色_python 输出指定的颜色