求两个集合的差集
下面这些代码是求两个集合的交集
就是不知道如何求交集,求解!!!
#include <stdlib.h>
#include <stdio.h>
#define ElemType int
typedef struct LNode
{
ElemType data;
struct LNode*next;
}LNode,*LinkList;
LNode*create(ElemType data[],int n)
{
LNode*head,*p,*rear;
int k;
head= (LNode*)malloc(sizeof(LNode)); /*head指向单链表的头结点*/
head->next = NULL;
rear=head;
for(k=0;k<n;k++)
{
p= (LNode*)malloc(sizeof(LNode));
p->data=data[k];
p->next=NULL;
rear->next=p;
rear=p;
}
return head;
}
void display(LNode*head)
{
LNode*p;
p=head->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
LNode *inter(LNode*head1,LNode*head2)
{
LNode*p,*q,*head3,*s;
head3=(LNode*)malloc(sizeof(LNode));
p=head1->next;
q=head2->next;
head3->next=NULL;
while(p)
{
while(q)
{
if(p->data==q->data)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=p->data;
s->next=head3->next;
head3->next=s;
break;
}
else
q=q->next;
}
p=p->next;
q=head2->next;
}
return head3;
}
void main()
{
int data1[10],data2[10];
int num1,num2,i;
LNode*h1,*h2,*h3;
printf("输入集合A中的元素数:");
scanf("%d",&num1);
printf("输入集合A中的数据元素:");
for(i=0;i<num1;i++)
scanf("%d",&data1[i]);
printf("输入集合B中的元素数:");
scanf("%d",&num2);
printf("输入集合B中的数据元素:");
for(i=0;i<num2;i++)
scanf("%d",&data2[i]);
h1=create(data1,num1);
h2=create(data2,num2);
printf("生成如下两个链表\n");
printf("链表1:");
display(h1);
printf("链表2:") ;
display(h2);
h3=inter(h1,h2);
printf("两个集合的差C为:");
display(h3);
}