数据结构 用c语言写的 集合的并、交和差运算的程序基本要求:(1)集合的元素限定为小写字母字符〔‘a’..'z'〕.(2)演示程序以用户和计算机的对话方式执行.实现提示:以有序链表表示

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 10:28:07
数据结构 用c语言写的 集合的并、交和差运算的程序基本要求:(1)集合的元素限定为小写字母字符〔‘a’..'z'〕.(2)演示程序以用户和计算机的对话方式执行.实现提示:以有序链表表示

数据结构 用c语言写的 集合的并、交和差运算的程序基本要求:(1)集合的元素限定为小写字母字符〔‘a’..'z'〕.(2)演示程序以用户和计算机的对话方式执行.实现提示:以有序链表表示
数据结构 用c语言写的 集合的并、交和差运算的程序
基本要求:(1)集合的元素限定为小写字母字符〔‘a’..'z'〕.
(2)演示程序以用户和计算机的对话方式执行.
实现提示:
以有序链表表示集合.

数据结构 用c语言写的 集合的并、交和差运算的程序基本要求:(1)集合的元素限定为小写字母字符〔‘a’..'z'〕.(2)演示程序以用户和计算机的对话方式执行.实现提示:以有序链表表示
以下程序由标准C实现,并经严格测试.程序通过单链表存储集合
#include
#include
typedef struct pointer{
char dat;
struct pointer *link;
} pointer;
void readdata(pointer *head){ //读集合
pointer *p;
char tmp;
printf("input data ('0' for end):");
scanf("%c",&tmp);
while(tmp!='0')
{
if((tmp'z'))
{
printf("输入错误!必须为小写字母!\n");
return;
}
p=(pointer *)malloc(sizeof(struct pointer));
p->dat=tmp;
p->link=head->link;
head->link=p;
scanf("%c",&tmp);
}
}
void disp(pointer *head){ //显示集合数据
pointer *p;
p=head->link;
while(p!=NULL)
{
printf("%c ",p->dat);
p=p->link;
}
printf("\n");
}
void bing(pointer *head1,pointer *head2, pointer *head3){ //计算集合1与集合2的并
pointer *p1,*p2,*p3;
p1=head1->link;
while(p1!=NULL)
{
p3=(pointer *)malloc(sizeof(struct pointer));
p3->dat=p1->dat;
p3->link=head3->link;
head3->link=p3;
p1=p1->link;
}
p2=head2->link;
while(p2!=NULL)
{
p1=head1->link;
while((p1!=NULL)&&(p1->dat!=p2->dat))
p1=p1->link;
if(p1==NULL)
{
p3=(pointer *)malloc(sizeof(struct pointer));
p3->dat=p2->dat;
p3->link=head3->link;
head3->link=p3;
}
p2=p2->link;
}
}
void jiao(pointer *head1,pointer *head2, pointer *head3){ //计算集合1与集合2的交
pointer *p1,*p2,*p3;
p1=head1->link;
while(p1!=NULL)
{
p2=head2->link;
while((p2!=NULL)&&(p2->dat!=p1->dat))
p2=p2->link;
if((p2!=NULL)&&(p2->dat=p1->dat))
{
p3=(pointer *)malloc(sizeof(struct pointer));
p3->dat=p1->dat;
p3->link=head3->link;
head3->link=p3;
}
p1=p1->link;
}
}
void cha(pointer *head1,pointer *head2, pointer *head3){ //计算集合1与集合2的差
pointer *p1,*p2,*p3;
p1=head1->link;
while(p1!=NULL)
{
p2=head2->link;
while((p2!=NULL)&&(p2->dat!=p1->dat))
p2=p2->link;
if(p2==NULL)
{
p3=(pointer *)malloc(sizeof(struct pointer));
p3->dat=p1->dat;
p3->link=head3->link;
head3->link=p3;
}
p1=p1->link;
}
}
main(){
pointer *head1,*head2,*head3;
head1=(pointer *)malloc(sizeof(struct pointer));
head1->link=NULL;
head2=(pointer *)malloc(sizeof(struct pointer));
head2->link=NULL;
head3=(pointer *)malloc(sizeof(struct pointer));
head3->link=NULL;
printf("输入集合1:\n");
readdata(head1);
printf("输入集合2:\n");
readdata(head2);
printf("集合1为:\n");
disp(head1);
printf("集合2为:\n");
disp(head2);
printf("集合1与集合2的并为:\n");
bing(head1,head2,head3);
disp(head3);
head3->link=NULL;
printf("集合1与集合2的交为:\n");
jiao(head1,head2,head3);
disp(head3);
head3->link=NULL;
printf("集合1与集合2的差为:\n");
cha(head1,head2,head3);
disp(head3);
}
测试用例为(0表示集合输入结束):
fdsa0
savc0

数据结构 用c语言写的 集合的并、交和差运算的程序基本要求:(1)集合的元素限定为小写字母字符〔‘a’..'z'〕.(2)演示程序以用户和计算机的对话方式执行.实现提示:以有序链表表示 数据结构与算法实习题介绍:A和B的并集:A和B的交集:A和B的差集:实现2个集合的并、交和差的运算.提示:集合的数据元素为整数,A、B集合最多允许25个数据元素.分别用顺序结构和链式结 怎样用C语言实现集合的并交呢? 这两个数据结构(c语言)题怎么做?求集合A和集合B的并集C.如A=(2,4,6,7,9)和B=(1,5,7,8)的并集为C=(2,4,6,7,9,1,5,8).算法分析:用两个顺序表La 和Lb分别表示集合A和B.求集合A和集合B的并集就是将La和Lb 本人碰见一道C语言难题,利用C语言实现:求任意两个集合的交集、并集、差集, 数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版 数据结构的算法:写出一算法输出已知顺序表A中元素的最大值和次最大值.用非形式算法描述,并编写C语言程 数据结构C语言括号的检验源程序 数据结构(C语言) 如何分别用顺序和链式 实现一元多项式的相加? 数据结构算法2.1两个线性表LA和LB,求新的集合那个,C语言版完整程序怎么写啊 “集合的交、并、差运算的作用” c语言 集合的差,交,并,笛卡尔积的运算.例如A={2,3,4,5,6,7,8}B={2,3,4,5,11,25}怎么算出A与B的交,并,差,笛卡尔积.主要是怎么么运算出结果的,假入结果的集合是C, 数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算 用单链表实现集合的并,交,差运算.急啊~~3号之前要.数据结构的实验1、用有序单链表表示集合,在建立单链表时,对于每一个新结点都要在现有的链表中判断它的插入位置,如此,即可建立一个有 我用C语言写一个关于算术表达式求值的程序.(用数据结构中的栈知识) 本人碰见一道C语言难题,寻大神帮助,利用C语言实现:求任意两个集合的交集、并集、差集,兄弟感激不尽 VC++编写 实现2个集合的并、交和差的运算介绍:A和B的并集:A和B的交集:A和B的差集:实现2个集合的并、交和差的运算.提示:集合的数据元素为整数,A、B集合最多允许25个数据元素.程序允 数据结构的结构与算法和C语言的区别是什么