
2014数据结构与算法 实现2个集合的并、交和差的运算 20
介绍:A和B的并集:A和B的交集:A和B的差集:问题描述:实现2个集合的并、交和差的运算。提示:集合的数据元素为整数,A、B集合最多允许25个数据元素。分别用顺序结构和链...
介绍:
A和B的并集:
A和B的交集:
A和B的差集:
问题描述:
实现2个集合的并、交和差的运算。
提示:
集合的数据元素为整数,A、B集合最多允许25个数据元素。
分别用顺序结构和链式结构实现本题算法。
程序允许用户:
1) 增加一个数据:选择一个集合并将给定值加到集合中。
2) 删除一个数据:选择一个集合并将给定值从集合中删去。
3) 计算集合的并、交和差。
4) 提供一个简单的操作界面使用户能执行上述操作并显示运行结果。
程序的操作界面如下:
Menu;
IA : Insert into Set A DA :Delete from Set A
IB : Insert into Set B DB :Delete from Set B
OU : Union OI: Intersection
OD : Difference Q: Quit
Enter Command ===> 展开
A和B的并集:
A和B的交集:
A和B的差集:
问题描述:
实现2个集合的并、交和差的运算。
提示:
集合的数据元素为整数,A、B集合最多允许25个数据元素。
分别用顺序结构和链式结构实现本题算法。
程序允许用户:
1) 增加一个数据:选择一个集合并将给定值加到集合中。
2) 删除一个数据:选择一个集合并将给定值从集合中删去。
3) 计算集合的并、交和差。
4) 提供一个简单的操作界面使用户能执行上述操作并显示运行结果。
程序的操作界面如下:
Menu;
IA : Insert into Set A DA :Delete from Set A
IB : Insert into Set B DB :Delete from Set B
OU : Union OI: Intersection
OD : Difference Q: Quit
Enter Command ===> 展开
1个回答
展开全部
这是求并集的算法描述,链式结构实现的,参考一下
算法描述
LNode *Merge_LinkList(LNode *La, LNode *Lb)
/* 合并以La, Lb为头结点的两个有序单链表 */
{ LNode*Lc, *pa , *pb, *pc, *ptr ;
Lc=La; pc=La ; pa=La->next ; pb=Lb->next ;
while (pa!=NULL && pb!=NULL)
{ if (pa->data<pb->data)
{ pc->next=pa ; pc=pa ; pa=pa->next ; }
/* 将pa所指的结点合并,pa指向下一个结点 */
if (pa->data>pb->data)
{ pc->next=pb; pc=pb ; pb=pb->next ; }
/* 将pa所指的结点合并,pa指向下一个结点 */
if (pa->data==pb->data)
{ pc->next=pa ; pc=pa ; pa=pa->next ;
ptr=pb; pb=pb->next; free(ptr); }
/* 将pa所指的结点合并,pb所指结点删除 */
}
if (pa!=NULL) pc->next=pa ;
else pc->next=pb; /*将剩余的结点链上*/
free(Lb) ;
return(Lc) ;
}
算法描述
LNode *Merge_LinkList(LNode *La, LNode *Lb)
/* 合并以La, Lb为头结点的两个有序单链表 */
{ LNode*Lc, *pa , *pb, *pc, *ptr ;
Lc=La; pc=La ; pa=La->next ; pb=Lb->next ;
while (pa!=NULL && pb!=NULL)
{ if (pa->data<pb->data)
{ pc->next=pa ; pc=pa ; pa=pa->next ; }
/* 将pa所指的结点合并,pa指向下一个结点 */
if (pa->data>pb->data)
{ pc->next=pb; pc=pb ; pb=pb->next ; }
/* 将pa所指的结点合并,pa指向下一个结点 */
if (pa->data==pb->data)
{ pc->next=pa ; pc=pa ; pa=pa->next ;
ptr=pb; pb=pb->next; free(ptr); }
/* 将pa所指的结点合并,pb所指结点删除 */
}
if (pa!=NULL) pc->next=pa ;
else pc->next=pb; /*将剩余的结点链上*/
free(Lb) ;
return(Lc) ;
}
追问
能完整的写出来吗?专业选修课听的不是太懂
追答
要是不着急的话,元旦假期写一写。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询