参考博客
与原博客略有不同,方法一样
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <stack>
#include <queue>
#define ll long long
#define inf 0x3f3f3f
using namespace std;
const int maxn = 1e5+10;
vector<int>s;
vector<int>ans;
struct node
{
int next;
int pre;
int data;
}l[maxn];
int main()
{
ios::sync_with_stdio(false);
int _begin,n;
cin>>_begin>>n;
int na,ta,x;
for(int i=1; i<=n; i++)
{
cin>>ta>>x>>na;
l[ta].data = x;
l[ta].next = na;
}
while(_begin!=-1)
{
s.push_back(_begin);
_begin = l[_begin].next;
}
for(int i=0,j=s.size()-1; i<=j; i++,j--)
{
if(i!=j)
{
ans.push_back(s[j]);
ans.push_back(s[i]);
}
else
{
ans.push_back(s[i]);
}
}
for(int i=0; i<ans.size()-1; i++)
{
printf("%05d %d %05d\n",ans[i],l[ans[i]].data,ans[i+1]);
}
printf("%05d %d -1\n",ans[ans.size()-1],l[ans[ans.size()-1]].data);
return 0;
}