题目
https://www.acwing.com/problem/content/description/1562/
思路: 先不管是不是链表题 当做普通的题目来思考 最后再套进y总的模板里
C++ 代码
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 100010;
int e[N], ne[N];
typedef pair<int, int> PII; //链表很多操作配合PII很好用
int main()
{
//简单的链表创建
int head, n, m;
scanf("%d%d%d", &head, &n, &m);
vector<PII> v;
for(int i = 0; i < n; i ++)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
e[a] = b;
ne[a] = c;
}
//存入pII 等待之后的操作 PII好处是数值加上地址一起存 简化输出
for(int i = head; i != -1; i = ne[i])
v.push_back({e[i], i});
n = v.size();
for(int i = 0; i < n; i += m) //遍历一下PII 每m个进行一次翻转
{
if(i + m - 1 < n) reverse(v.begin() + i, v.begin() + i + m); //最后如果超出了长度无需操作
}
for(int i = 0; i < n; i ++)
if(i != n - 1) printf("%05d %d %05d\n", v[i].second, v[i].first, v[i + 1].second);
else printf("%05d %d -1\n", v[i].second, v[i].first);
return 0;
}