当前位置:网站首页>区块反转(DAY 71)
区块反转(DAY 71)
2022-07-20 14:53:00 【张学恒】
1:原题题目
给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有区块的链接反转。
例如:给定 L 为 1→2→3→4→5→6→7→8,K 为 3,则输出应该为 7→8→4→5→6→1→2→3。
补充
本题中可能包含不在单链表中的节点,这些节点无需考虑。
输入格式
第 1 行给出第 1 个结点的地址、结点总个数正整数 N、以及正整数 K,即区块的大小。结点的地址是 5 位非负整数(可能包含前导 0),NULL 地址用 −1 表示。
接下来有 N 行,每行格式为:
Address Data Next
其中 Address 是结点地址,Data 是该结点保存的整数数据,Next 是下一结点的地址。
输出格式
对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。
数据范围
1≤K≤N≤105
输入样例:
00100 8 3
71120 7 88666
00000 4 99999
00100 1 12309
68237 6 71120
33218 3 00000
99999 5 68237
88666 8 -1
12309 2 33218
输出样例:
71120 7 88666
88666 8 00000
00000 4 99999
99999 5 68237
68237 6 00100
00100 1 12309
12309 2 33218
33218 3 -1
难度:简单
时/空限制:0.4s / 64MB
总通过数:997
总尝试数:2258
来源:PAT甲级真题1165
算法标签
2:代码实现
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int n, m;
int w[N], ne[N];
int q[N];
int main()
{
int h;
scanf("%d%d%d", &h, &n, &m);
while (n -- )
{
int addr, data, next;
scanf("%d%d%d", &addr, &data, &next);
w[addr] = data;
ne[addr] = next;
}
int cnt = 0;
for (int i = h; i != -1; i = ne[i])
q[cnt ++ ] = i;
reverse(q, q + cnt);
for (int i = cnt - 1; i >= 0; i -= m)
reverse(q + max(0, i - m + 1), q + i + 1);
for (int i = 0; i < cnt; i ++ )
{
int addr = q[i], next = q[i + 1];
printf("%05d %d ", addr, w[addr]);
if (i == cnt - 1) puts("-1");
else printf("%05d\n", next);
}
return 0;
}
边栏推荐
- [harmony OS] [FAQ] Hongmeng application development problem sharing (font / constructor)
- grafana连接TDengine报错535
- Qt tablewidget判断某行是否被选中并获取选中行的数据
- 【argoverse】argoverse-api 安装
- C语言力扣第五题之回文数(两种方法)
- 我是如何毕业就失业的?
- [font anti crawl] cat x-eye Yingshi, we're bullying you again, using OCR recognition technology
- C语言力扣第九题之回文数。两指针数组遍历法
- Binary number inversion (C language)
- js遍历字符串
猜你喜欢
随机推荐
关于win7/win10系统安装的基本设置
出现线上bug,测试人能做些什么?
About the basic setup of win7/win10 system installation
[harmony OS] [FAQ] Hongmeng application development problem sharing (font / constructor)
Using phpmailer to realize the function of sending email in thinkphp5
MoonPdfLib预览PDF使用记录
thinkphp5中使用phpmailer实现发送邮件功能
Qt连接mysql并操作数据库(最清晰)
494.目标和·深度优先搜索·背包问题
DOS汇编DEBUG基本命令及其功能详解
Skipped 60 frames! The application may be doing too much work on its main thread
【组成原理 五 系统总线】
[pytorch] torch geometric installation
MongoDB数据库的简单使用
[Alibaba cloud server]
流量红利退去,快消品代理商如何借助RPA破局增长?
【HMS Core】【FAQ】【Health Kit】运动健康服务常见错误码合集 403、401、1001、20023
【argoverse】argoverse-api 安装
vscode安装及配置
oracle is not null 过滤不了Null值