设计一个能够实现两个集合的并和交运算的程

 要求:1,集合中的元素限定为英文字母和阿拉伯数字,集合中不允许出现重复元素

            2,集合元素在输入时以“#”为结束标志。

            3,用两个单链表A和B分别来表示两个集合。

 取交集和并集:

如有帮助请在我的回答上点个【采纳】

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a[5],b[5],c[10],d[10],x,y,z;
    printf("请输入5个A集合数据,空格隔开,回车结束\n:");
    for(x=0;x<5;x++){
    	scanf("%d",&a[x]);
    	
    }
    fflush(stdin);
    printf("请输入5个B集合数据,空格隔开,回车结束\n:");
    for(y=0;y<5;y++){
    	scanf("%d",&b[y]);
    	
    }
    printf("集合A的元素有\n");
    for(x=0;x<5;x++){
    	printf("%3d",a[x]);
    }
     printf("\n集合B的元素有\n");
    for(y=0;y<5;y++){
    	printf("%3d",b[y]);
    }
    //并集
    for(z=0;z<10;z++){
    	if(z<=4){
    		c[z]=a[z];
    	}else{
    		c[z]=b[z-5];
    	}
    }
    printf("\nA和B的并集:\n");
    for(z=0;z<10;z++){
    	printf("%3d",c[z]);
    }
    //交集
    z=0;
    for(x=0;x<5;x++){
    	for(y=0;y<5;y++){
    		if(a[x]==b[y]){
    			d[z]=a[x];
    			z++;
    			break;
    		}
    	}
    }
    
    printf("\nA和B的交集:\n");
    for(x=0;x<z;x++){
    	printf("%3d",d[x]);
    }
}

可以尝试先排序在进行并和交操作。排序后,例如并操作:先遍历A,和B的第一个元素比较,如果小于B元素则把A的添加到并集,A链表向后移动,继续和B比较大小,并集放入小的,如果B元素小则放入B中的元素,B向后移动,继续操作,直到有一个链表遍历完毕,把另一个链表元素挨个放入并集。交操作:遍历A,A第一个元素和B第一个元素比较,如果比B小,则A指针后移继续比较,如果A中某个元素比B元素大,则向后移动B指针继续比较操作

英文字母为什么不行?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632