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 }