#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int, int> P;
P addr[100000];
struct node
{
int address, data, Next;
};
int main()
{
int start, n, k, address, data, Next;
scanf("%d %d %d", &start, &n, &k);
vector<node> list;
for(int i = 0; i < n; ++i)
{
scanf("%d %d %d", &address, &data, &Next);
P p;
p.first = data;
p.second = Next;
addr[address] = p;
}
int tmp = start;
while(tmp != -1)
{
node n;
n.address = tmp;
n.data = addr[tmp].first;
n.Next = addr[tmp].second;
list.push_back(n);
tmp = n.Next;
}
for(int l = 0, index = 0; l < list.size() / k; ++l)
{
reverse(list.begin() + index, list.begin() + index + k);//反转
index += k;
}
int o = 0;
for(; o < list.size() - 1; ++o)
{
printf("%05d %d %05d\n", list[o].address, list[o].data, list[o + 1].address);
}
printf("%05d %d -1\n", list[o].address, list[o].data);
return 0;
}
PAT乙级 1025 反转链表 (25 分)
最新推荐文章于 2023-02-21 19:51:59 发布