分析
做法:先遍历一遍链表,将链表转换成数组,然后设置两个下标遍历数组,注意奇数个情况下的越界问题~!!!这里是一个坑点!
ac代码
#include<bits/stdc++.h>
using namespace std;
struct node{
int id;
int next;
}node[100000];
int main(){
int begin,n;
cin>>begin>>n;
for(int i=0;i<n;i++){
int x;
cin>>x;
cin>>node[x].id>>node[x].next;
}
vector<int> v;
for(;node[begin].next!=-1;begin=node[begin].next){
v.push_back(begin);
}
v.push_back(begin);
int i=0;int j=v.size()-1;
while(i<=j){
if(j==v.size()-1){
printf("%05d %d ",v[j],node[v[j]].id);j--;
}else{
printf("%05d\n",v[j]);
printf("%05d %d ",v[j],node[v[j]].id);j--;
}
if(i<=j){
printf("%05d\n",v[i]);
printf("%05d %d ",v[i],node[v[i]].id);i++;
}
if(i>j){
cout<<-1<<endl;
}
}
return 0;
}