
1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct Node{ 4 int data; 5 Node*next; 6 }Node,*LinkList; 7 InitLinkList(LinkList*L) 8 { 9 *L=(LinkList)malloc(sizeof(Node)); 10 (*L)->next=NULL; 11 } 12 CreateLinkList(LinkList L) 13 { 14 int length,e; 15 Node*t,*r; 16 scanf("%d",&length); 17 r=L; 18 for(int i=0;i<length;i++) 19 { 20 scanf("%d",&e); 21 t=(LinkList)malloc(sizeof(Node)); 22 t->data=e; 23 r->next=t; 24 r=t; 25 } 26 r->next=NULL; 27 } 28 MergeLinkList(LinkList A,LinkList B,LinkList C) 29 { 30 Node*a=A->next,*b=B->next,*c=C; 31 Node*t; 32 while(a) 33 { 34 while(b&&b->data<a->data)b=b->next; 35 if(a->data==b->data) 36 { 37 t=(LinkList)malloc(sizeof(Node)); 38 t->data=a->data; 39 c->next=t; 40 c=t; 41 } 42 43 a=a->next; 44 } 45 c->next=NULL; 46 47 48 } 49 DeleteSame(LinkList C) 50 { 51 Node*p=C->next,*q; 52 while(p) 53 { 54 for(q=p->next;q&&q->data==p->data;q=p->next) 55 p->next=q->next; 56 57 p=p->next; 58 } 59 } 60 Order(LinkList C) 61 { 62 Node*t=C->next; 63 while(t) 64 { 65 printf("%d ",t->data); 66 t=t->next; 67 } 68 } 69 int main() 70 { 71 LinkList A,B,C; 72 InitLinkList(&A),InitLinkList(&B),InitLinkList(&C); 73 CreateLinkList(A),CreateLinkList(B); 74 MergeLinkList(A,B,C); 75 DeleteSame(C); 76 Order(C); 77 return 0; 78 }