1074 Reversing Linked List

题目链接 https://pintia.cn/problem-sets/994805342720868352/problems/994805394512134144

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
int main() {
int first, k, n, sum = 0;
cin >> first >> n >> k;
int temp, data[100005], next[100005], list[100005], result[100005];
for (int i = 0; i < n; i++) {
cin >> temp;
cin >> data[temp] >> next[temp];
}
while (first != -1) {
list[sum++] = first;
first = next[first];
}
//result[100] r[12309] r[33218] r[00000] r[99999] r[68237]
//1-2-3-4-5-6-7-8
//3-2-1-6-5-4-7-8
for (int i = 0; i < sum; i++) result[i] = list[i];
int left = 0, i, index = k;
int cnt = sum / k;
while (cnt--) { // 循环实现更好理解
for (i = left; i < k + left; ++i) {
result[i] = list[--index];
}
left = i;
index = k + left;
}

/*liuchuo.net
* for (int i = 0; i < (sum - sum % k); i++)
* result[i] = list[i / k * k + k - 1 - i % k];
*/
for (int i = 0; i < sum - 1; i++)
printf("%05d %d %05d\n", result[i], data[result[i]], result[i + 1]);
printf("%05d %d -1", result[sum - 1], data[result[sum - 1]]);
return 0;
}

1074 Reversing Linked List
https://pisces34.github.io/2021/05/08/patA/1074/
发布于
2021年5月8日
许可协议