模拟这个链表就行了
#include<cstdio>
#include<cstring>
#include<cstdlib>
typedef struct node
{
int val;
struct node *next;
struct node *other;
void setVal(int v)
{
this->val = v;
next = other = NULL;
}
}List;
void createList(int n,List list[])
{
int val;
for(int i = 0;i<n;++i)
{
scanf("%d",&val);
list[i].setVal(val);
if(i != n-1)
list[i].next = &list[i+1];
}
for(int i=0;i<n;++i)
{
scanf("%d",&val);
if(val != 0)
list[i].other = &list[val-1];
}
}
void printList(List *list)
{
while(list != NULL)
{
printf("%d",list->val);
if(list->other != NULL)
printf(" %d\n",list->other->val);
else
printf(" 0\n");
list = list->next;
}
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
List list[1009];
createList(n,list);
printList(list);
}
return 0;
}