题目:
思路分析:
模拟就行:
先拿结构体存列表的关系
然后依次放入vector容器中 模拟列表
然后左右二个指针依次遍历输出就行
代码实现:
const int N=1e5+10;
struct LNode
{
int key,next,ad;
}node[N];
int main()
{
int L,n;
vector<LNode> v;
cin>>L>>n;
for(int i=0; i<n; i++)
{
int a,b,c;
cin>>a>>b>>c;
node[a].ad=a;
node[a].key=b;
node[a].next=c;
}
while(L!=-1) //将所有结点放到vector中
{
v.push_back(node[L]);
L=node[L].next;
}
int cnt=0,l=0,r=v.size()-1;
while(1)
{
if(cnt+1==v.size())
{
printf("%05d %d -1",v[r].ad,v[r].key);
break;
}
printf("%05d %d %05d\n",v[r].ad,v[r].key,v[l].ad);
r--,cnt++;
if(cnt+1==v.size())
{
printf("%05d %d -1",v[l].ad,v[l].key);
break;
}
printf("%05d %d %05d\n",v[l].ad,v[l].key,v[r].ad);
l++,cnt++;
}
}