//单链表的删除
#include "stdio.h"
#include "stdlib.h"
typedef struct Node{
int data;
struct Node *next;
}Node,*NodePtr;
typedef Node ListHead,*ListHeadPtr;
void List_Init(ListHeadPtr L){
NodePtr p,q;
p = L;
for(int i = 0;i < L->data;i++)
{
q = (NodePtr)malloc(sizeof(Node));
q->next = NULL;
p->next = q;
scanf("%d",&q->data);
p = p->next;
}
}
void List_Del(ListHeadPtr l1,ListHeadPtr l2,ListHeadPtr l3){
NodePtr p1,p2,q,r;
p1 = l1;
p2 = l1->next;
q = l2->next;
r = l3->next;
while(p2 && q && r){
if(q->data < r->data)
{
q = q->next;
}
else if(q->data > r->data)
{
r = r->next;
}
else
{
if(p2->data < q->data)
{
p1 = p1->next;
p2 = p2->next;
}
else if(p2->data > q->data)
{
q=q->next;
r=r->next;
}
else{
p1->next = p2->next;
free(p2);
p2 = p1->next;
l1->data--;
}
}
}
}
void List_Print(ListHeadPtr L){
NodePtr p;
p = L->next;
for(int i = 0;i < L->data;i++)
{
printf("%d ",p->data);
p = p->next;
}
}
int main(){
ListHeadPtr la,lb,lc;
la = (ListHeadPtr)malloc(sizeof(ListHead));
lb = (ListHeadPtr)malloc(sizeof(ListHead));
lc = (ListHeadPtr)malloc(sizeof(ListHead));
la->next = NULL;
lb->next = NULL;
lc->next = NULL;
scanf("%d %d %d",&la->data,&lb->data,&lc->data);
List_Init(la);
List_Init(lb);
List_Init(lc);
List_Del(la,lb,lc);
List_Print(la);
return 0;
}