这道题其实不难,不妨定义一个结构体数组,把下标当作链表地址,每个结构体里面存放当前地址,下一个节点地址,以及数据,然后遍历整条链表,把遍历过程中链表的每一个节点都放在vector中,最后按照题目要求输出即可。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct node{
int add;
int data;
int next;
}l[100005];
vector<node> v;
int main()
{
int L,n;
cin>>L>>n;
for(int i=0;i<n;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
l[a].add=a;
l[a].data=b;
l[a].next=c;
}
while(L!=-1)
{
v.push_back(l[L]);
L=l[L].next;
}
int l=0,r=v.size()-1;
int cnt=0;
while(1)
{
if(cnt+1==v.size())
{
printf("%05d %d -1\n",v[r].add,v[r].data,v[l].add);
break;
}
printf("%05d %d %05d\n",v[r].add,v[r].data,v[l].add);
cnt++;
if(cnt+1==v.size())
{
printf("%05d %d -1\n",v[l].add,v[l].data);
break;
}
printf("%05d %d %05d\n",v[l].add,v[l].data,v[r-1].add);
cnt++;
l++;r--;
}
}