链表实现集合交并差//求交集函数Node* qiujiaoji(Node *h1,Node *h2){//h为交集所在链表的头指针Node *h=new Node;Node *p=h,*q; //p,q为交集中移动的指针Node *p1=h1,*p2=h2; //p1,p2为两个集合中移动的指针//找出相

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 04:58:59
链表实现集合交并差//求交集函数Node* qiujiaoji(Node *h1,Node *h2){//h为交集所在链表的头指针Node *h=new Node;Node *p=h,*q; //p,q为交集中移动的指针Node *p1=h1,*p2=h2; //p1,p2为两个集合中移动的指针//找出相

链表实现集合交并差//求交集函数Node* qiujiaoji(Node *h1,Node *h2){//h为交集所在链表的头指针Node *h=new Node;Node *p=h,*q; //p,q为交集中移动的指针Node *p1=h1,*p2=h2; //p1,p2为两个集合中移动的指针//找出相
链表实现集合交并差
//求交集函数
Node* qiujiaoji(Node *h1,Node *h2)
{
//h为交集所在链表的头指针
Node *h=new Node;
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=new Node;
q=p;
p=p->next;
}
p2=p2->next;
}
p1=p1->next;
}
q->next=NULL;
delete p;
return h;
}
//求并集函数
Node* qiubingji(Node *h1,Node *h2)
{
//h为并集所在链表的头指针
Node *h=new Node;
Node *p=h,*q; //p,q为并集中移动的指针
Node *p1=h1,*p2=h2; //p1,p2为两个集合中移动的指针
//把第一个集合复制到并集中
while(p1!=NULL)
{
p->content=p1->content;
p->next=new Node;
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=new Node;
q=p;
p=p->next;
p2=p2->next;
}
p1=p1->next;
}
p2=p2->next;
}
q->next=NULL;
delete p;
return h;
}
//求第一个集合/第二个集合的函数
Node* qiuchaji_A_and_B(Node *h1,Node *h2)
{
//h为差集所在链表的头指针
Node *h=new Node;
Node *p=h,*q; //p,q为差集中移动的指针
Node *p1=h1,*p2=h2; //p1,p2为两个集合中移动的指针
//把第一个集合复制到差集中
while(p1!=NULL)
{
p->content=p1->content;
p->next=new Node;
q=p;
p=p->next;
p1=p1->next;
}
q->next=NULL;
delete p;
//把第二个集合中出现的元素删除
p=h;
while(p->next!=NULL)
{
p2=h2;
while(p2!=NULL)
{
if(p==h && p->content==p2->content)
{
q=p;
h=h->next;
p=p->next;
delete q;
}
else if(p->next->content==p2->content)
{
q=p->next;
p->next=q->next;
p=p->next;
delete q;
}
p2=p2->next;
}
}
return h;
}
——————————————————————————
三个函数都运行不起来 好像是什么访问到了不对的内存空间 但我找不出来哪错了.

链表实现集合交并差//求交集函数Node* qiujiaoji(Node *h1,Node *h2){//h为交集所在链表的头指针Node *h=new Node;Node *p=h,*q; //p,q为交集中移动的指针Node *p1=h1,*p2=h2; //p1,p2为两个集合中移动的指针//找出相
从思路上看,
交集的函数是对的,但并集和差集的做法不对.
并集函数中,先把h1的队列复制过去是对的,但要把h2中不存在h1的元素补充进去时,每拿出一个h2的元素,需要遍历所有h1的元素,然后才能决定是否放进结果集,不能一有不同就放.
差集的错误与并集类似

还有一个小的建议,
先创建头结点 Node *h=new Node; 这种做法不错,
但在添加新节点时,用下面的顺序可以更方便
p->next = new Node;
p = p->next;
p->content=p1->content;
p->next = NULL;
在最后,把头结点删掉就行
p = h->next;
delete h;
return p;

链表实现集合交并差//求交集函数Node* qiujiaoji(Node *h1,Node *h2){//h为交集所在链表的头指针Node *h=new Node;Node *p=h,*q; //p,q为交集中移动的指针Node *p1=h1,*p2=h2; //p1,p2为两个集合中移动的指针//找出相 用顺序表和单链表分别实现求集合的并集、交集和差集. 本人碰见一道C语言难题,利用C语言实现:求任意两个集合的交集、并集、差集, 本人碰见一道C语言难题,寻大神帮助,利用C语言实现:求任意两个集合的交集、并集、差集,兄弟感激不尽 集合求交集 集合的交并补什么时候用不是这个意思,是说在运算的过程中,在哪些地方是用交集,哪些地方用并集。 实数运算中的交换律、结合律,在求集合的交并集中是否适用? 高一必修一数学集合交并集关系已知A={x|负2≦x≦4},B={x|x>a}.(1)若A和B的交集不等于A,求实数a的取值范围.(2)若A和B的交集不等于空集,且A和B的交集不等于A,求实数a的取值范围.最重要的是解题过 VC++编写 实现2个集合的并、交和差的运算介绍:A和B的并集:A和B的交集:A和B的差集:实现2个集合的并、交和差的运算.提示:集合的数据元素为整数,A、B集合最多允许25个数据元素.程序允 用c语言写两个程序,1,集合的交并差运算.2,计算关系的闭包(3种)不要求功能非常完备,能实现最基本的就行,采纳了把我所有的都给你,四百分 c++定义一个集合类,怎样用操作符重载实现交集并集运算 集合的交集就是求减法运算吗 已知集合A={x|x1}求交集 数据结构与算法实习题介绍:A和B的并集:A和B的交集:A和B的差集:实现2个集合的并、交和差的运算.提示:集合的数据元素为整数,A、B集合最多允许25个数据元素.分别用顺序结构和链式结 设函数f(x)=lg(2x-3)的定义域为集合M,函数g(x)=√(1-2/x-1)的定义域为集合N,求集合M,N,M和N的交集 c语言一道单向链表的改错题,例如输入1234560,则输出1,2,3,4,5,6.#include #include#includetypedef struct node{ int data; struct node *next;}NODE;#define LEN sizeof(NODE);NODE *setup(){ NODE *head=NULL,*p1,*p2; int n=0; p2=(NODE*)malloc( 集合A是锐角三角形,集合B是直角三角形,求集合AG和B的交集求A和B的交集 如何求菱形组成的集合A和矩形的集合B交集