#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int n;
}term,ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
typedef LinkList polymail;
void create(LinkList &L);
void add(polymail &pa,polymail &pb); void print(polymail &l);
int comp(polymail &p,ElemType b);
void main()
{
LinkList la,lb;
printf("请输入集合A\n");
create(la);
printf("请输入集合B\n");
create(lb);
add(la,lb);
print(la);
free(lb);
}
void create(LinkList &L)
{
LinkList p,q;
int n;
n=0;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
p=q=(LinkList)malloc(sizeof(LNode));
printf("输入以0结束\n");
scanf("%d",&p->data.n);
while(p->data.n!=0)
{
n=n+1;
if(n==1)
L->next=p;
else
q->next=p;
q=p;
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data.n);
}
q->next=NULL;
}
void add(polymail &pa,polymail &pb)
{
polymail ha,hb,qa,qb;
ElemType a;
ha=pa;
hb=pb;
qa=ha->next;
qb=hb->next;
while(qb)
{
a=qb->data;
switch(comp(pa,a))
{
case 0:hb=qb->next;qb->next=ha->next;ha->next=qb;qb=hb;break;
case 1:hb=qb->next;free(qb);qb=hb;break;
}
}
free(hb);
}
int comp(polymail &p,ElemType b)
{
int n;
n=0;
polymail q;
q=p->next;
if(q!=NULL)
do
{
if(b.n==q->data.n)
{
n=1;
break;
}
q=q->next;
}while(q!=NULL);
return n;
}
void print(polymail &p)
{
polymail q;
q=p->next;
if(q!=NULL)
do
{
printf("%d ",q->data.n);
q=q->next;
}while(q!=NULL);
printf("\n");
}。