链表实现集合交并差
//求交集函数
Node*qiujiaoji(Node*h1,Node*h2)
{
//h为交集所在链表的头指针
Node*h=newNode;
Node*p=h,*q;//p,q为交集中移动的指针
Node*p1=h1,*p2=h2;//p1,p2为两个集合中移动的指针
//找出相同的元素加入
while(p1!=NULL)
{
p2=h2;
while(p2!=NULL)
{
if(p1->content==p2->content)
{
p->content=p1->content;
p->next=newNode;
q=p;
p=p->next;
}
p2=p2->next;
}
p1=p1->next;
}
q->next=NULL;
deletep;
returnh;
}
//求并集函数
Node*qiubingji(Node*h1,Node*h2)
{
//h为并集所在链表的头指针
Node*h=newNode;
Node*p=h,*q;//p,q为并集中移动的指针
Node*p1=h1,*p2=h2;//p1,p2为两个集合中移动的指针
//把第一个集合复制到并集中
while(p1!=NULL)
{
p->content=p1->content;
p->next=newNode;
q=p;
p=p->next;
p1=p1->next;
}
//找出第二个集合中不包含在第一个集合内的元素补充进去
while(p2!=NULL)
{
p1=h1;
while(p1!=NULL)
{
if(p2->content!=p1->content)
{
p->content=p2->content;
p->next=newNode;
q=p;
p=p->next;
p2=p2->next;
}
p1=p1->next;
}
p2=p2->next;
}
q->next=NULL;
deletep;
returnh;
}
//求第一个集合/第二个集合的函数
Node*qiuchaji_A_and_B(Node*h1,Node*h2)
{
//h为差集所在链表的头指针
Node*h=newNode;
Node*p=h,*q;//p,q为差集中移动的指针
Node*p1=h1,*p2=h2;//p1,p2为两个集合中移动的指针
//把第一个集合复制到差集中
while(p1!=NULL)
{
p->content=p1->content;
p->next=newNode;
q=p;
p=p->next;
p1=p1->next;
}
q->next=NULL;
deletep;
//把第二个集合中出现的元素删除
p=h;
while(p->next!=NULL)
{
p2=h2;
while(p2!=NULL)