代码如图
#include <bits/stdc++.h>
using namespace std;
struct LNode
{
int data;
LNode *next;
LNode *pre;
};
int n = 0;
int main()
{
LNode* llist = (LNode*)malloc(sizeof(LNode));
LNode *p = (LNode*)malloc(sizeof(LNode));
llist->next = p;
llist->pre = NULL;
p->next = NULL;
p->pre = llist;
p->data = 1;
cin >> n;
for(int i = 2;i <= n ;i++)
{
LNode *t = llist->next;
int k = 0,p = 0;
cin >> k >> p;
while(t != NULL)
{
if(t->data == k)
{
LNode *q = (LNode*)malloc(sizeof(LNode));
q->data = i;
if(p == 0)
{
q->pre = t->pre;
if(t->pre != NULL)
t->pre->next = q;
q->next = t;
t->pre = q;
}else{
q->pre = t;
q->next = t->next;
if(t->next != NULL)
t->next->pre = q;
t->next = q;
}
break;
}
t = t->next;
}
}
int m = 0;
cin >> m;
for(int i = 1;i <= m;i++)
{
int x = 0;
cin >> x;
LNode *t = llist->next;
while(t != NULL)
{
if(t->data == x)
{
if(t->pre != NULL)
t->pre->next = t->next;
if(t->next != NULL)
t->next->pre = t->pre;
free(t);
break;
}
t = t->next;
}
}
LNode *t = llist->next;
while(t != NULL)
{
cout << t->data << " ";
t = t->next;
}
return 0;
}