使用静态链表存储链表 然后从头到尾走一遍使用map记录每个位置节点的地址后使用map结合静态链表按题目给出的顺序输出
#include<bits/stdc++.h>
using namespace std;
struct node {
int val;
int next;
}a[1000000];
int main(){
map<int,int>mp;
int first,n;
int add,value,nextadd;
cin>>first>>n;
for(int i=0;i<n;i++){
cin>>add>>value>>nextadd;
a[add].val=value;
a[add].next=nextadd;
}
int cnt=1;
while(1){
mp[cnt]=first;
cnt++;
first=a[first].next;
if(first==-1)
break;
}
int flag=1;
int now1=cnt-1,now2=1;
for(int i=0;i<cnt-1;i++){
if(flag==1){
printf("%05d %d",mp[now1],a[mp[now1]].val);
}
else{
printf("%05d %d",mp[now2],a[mp[now2]].val);
}
if(i!=cnt-2&&flag==1)
printf(" %05d\n",mp[now2]);
else if(i!=cnt-2&&flag==-1)
printf(" %05d\n",mp[now1]);
else if(i==cnt-2)
printf(" -1");
if(flag==1){
now1--;
flag=-1;
}
else{
flag=1;
now2++;
}
}
return 0;
}