PTA可怕的素质(双向链表法)
可怕的素质
亚克星球上的人的素质跟我们塞亚人比起来,可以说是一个天上,一个地下了。他们去食堂吃饭的时候,很多人都不好好的排队,而是排在某个熟人的后面,或者直接就插到队伍的最前面。这让食堂的工作人员很是恼火。
输入格式:
第一行包含一个整数n(0<n<1000),表示有n个亚克星球上的人去食堂吃饭。
接下来n行,每行1个整数x,表示第i( i从1~n )个人排在了x的后面,当x为0时,表示第i个人排在了最前面。
输出格式:
输出仅一行,包括n个数,以空格作为分隔符,最后一个数的后面没有空格。表示这n个人最后是排成了怎样的队伍。
输入样例:
3
0
0
2
输出样例:
2 3 1
#include<iostream>
#include<stdio.h>
using namespace std;
struct student{
int before;
int val;
int next;
}stu[1001];
int main()
{
int n;
int x,head;
cin>>n;
for(register int i=1;i<=n;i++)
{
cin>>x;
if(x==0)
{
stu[i].next=head;
head=i;
}
stu[i].val=i;
stu[i].before=x;
stu[i].next=stu[x].next;
stu[stu[i].next].before=i;
stu[stu[i].before].next=i;
}
for(register int i=head;i;i=stu[i].next)
{
if(i!=head) cout<<" "<<stu[i].val;
else
cout<<stu[i].val;
}
return 0;
}