#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = 1e5 + 10;
struct Node
{
int add, data, next;
}node[maxn];
void init()
{
for (int i = 0; i < maxn; i++)node[i].add = i;
}
int head, n, k;
vector<Node>list;
int main()
{
scanf("%d%d%d", &head, &n, &k);
init();
for (int i = 0; i < n; i++)
{
int address;
scanf("%d", &address);
scanf("%d%d", &node[address].data, &node[address].next);
}
int p = head;
while (p != -1)
{
list.push_back(node[p]);
p = node[p].next;
}
int group = list.size() / k;
for (int i = 0; i < group; i++)
{
reverse(list.begin() + i*k, list.begin() + i*k + k);
}
for (int i = 0; i < list.size(); i++)
{
printf("%05d %d ", list[i].add, list[i].data);
if (i != list.size() - 1)printf("%05d", list[i + 1].add);
else printf("-1");
printf("\n");
}
return 0;
}
静态链表模板题目,后面用的vector和reverse进行翻转