c语言函数集合交集 c语言求集合的交集

如何写一个c语言程序求两个集合的交集

定义两个数组存放这两个集合,再定义一个数组存放它们的集合,用类似冒泡排序的算法,遍历数组1中的第一个元素和数组2中每一个元素,若有相同的,则把这个元素放入第三个数组,继续遍历,知道数组1遍历完所有元素,那数组3中的元素,即为两个数组(集合)的交集。

创新互联专注于中大型企业的成都网站设计、成都做网站和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户千余家,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注成都品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!

c语言中有没有比较简单的算法来判断两个集合有交集

只判断有没有交集的话很简单了,直接挨个比较就可以了,如果有相同的返回1,没相同的返回0。

如果要求2个数组相交的元素的话自己写一个代码也可以,或者可以直接使用STL算法中的set_intersection函数。

怎样用语言c语言实现集合的合并,交集?

通过你描述的问题,正确的交集代码如下:

void bing(char a[],char b[],int m,int n)

{ char d[400];

int i=0,j=0,s=m;

for(i=0;im;i++)

d[i]=a[i];

for(i=0;in;i++){

for(j=0;jm;j++)

{

if(b[i]==a[j]) break;

}

if(j==m) d[s++]=b[i];

}

cout"集合并集是:";

for(i=0;is;i++)

coutd[i]" ";

}

c语言求交集

到底是交集还是并集啊?

求a,b的交集c

调用bing 函数求数组s1,s2的并集s3

C语言怎么用函数求集合的交集

首先,如果是数学上的集合概念,那就说明,集合A自身的每个元素都不相同。

那么,程序就可以简化成,

设数组key[52],用于记录字母出现次数。

扫描一次集合A,把出现的字母计到key的对应位置里。

同理扫描一次集合B。

查看key数组,=2的对应字母输出到集合C,C就是所求交集。

用c语言求两个集合的交集,并集,差集

#include stdio.h

#include string.h

#include conio.h

#define ARR_LEN 255 /*数组长度上限*/

#define elemType char /* 集合元素数据类型 */

/* 集合数据结构 */

typedef struct set {

elemType data[ARR_LEN];

int length;

} set;

/* 初始化集合 */

void initSet (set *S) {

S-length = 0;

/* 交集 */

/* A与B的交集(A∩B):既属于A又属于B的元素构成的集合 */

int setIntersection (set A, set B, set *dest) {

int i = 0, j = 0, k = 0;

dest-length = 0;

for (i=0; iA.length; i++) { /* 外循环遍历A */

for (j=0; jB.length; j++) { /* 内循环遍历B */

if (A.data[i] == B.data[j]) { /* 既属于A又属于B的元素,存入dest */

dest-data[k] = A.data[i];

k++;

}

}

}

dest-length = k;

if (dest-length)

return 1;

else

return 0;

}

/* 并集 */

/* A与B的并集(A∪B):A与B所有元素构成的集合 */

int setUnion (set A, set B, set *dest) {

int i = 0, j = 0, k = 0;

dest-length = 0;

for (i=0; iA.length; i++) { /* 外循环遍历A */

for (j=0; jB.length; j++) { /* 内循环遍历B */

if (A.data[i] == B.data[j]) /* 既属于A又属于B的元素,跳过 */

break;

}

if (j == B.length) { /* 属于A但不属于B的元素,存入dest */

dest-data[k] = A.data[i];

k++;

}

}

for (j=0; jB.length; j++) { /* B的所有元素,存入dest */

dest-data[k] = B.data[j];

k++;

}

dest-length = k;

if (dest-length)

return 1;

else

return 0;

}

/* 补集 */

/* B在A中的相对补集(A\B):属于A但不属于B的元素构成的集合 */

int setComplement (set A, set B, set *dest) {

int i = 0, j = 0, k = 0;

dest-length = 0;

for (i=0; iA.length; i++) { /* 外循环遍历A */

for (j=0; jB.length; j++) { /* 内循环遍历B */

if (A.data[i] == B.data[j]) /* 既属于A又属于B的元素,跳过 */

break;

}

if (j == B.length) { /* 属于A但不属于B的元素,存入dest */

dest-data[k] = A.data[i];

k++;

}

}

dest-length = k;

if (dest-length)

return 1;

else

return 0;

}

/* 打印集合内容 */

int printSet (set S) {

int i;

if (S.length == 0) {

puts ("The set is empty! ");

return 0;

}

for (i=0; iS.length; i++)

printf ("%c", S.data[i]);

putchar ('\n');

return 1;

}

int main (void) {

set A, B;

set AIB, AUB, ACB; /* 交集、并集、补集 */

initSet (A); initSet (B);

initSet (AIB); initSet (AUB); initSet (ACB);

strcpy (A.data, "123");

A.length = strlen (A.data);

strcpy (B.data, "4532");

B.length = strlen (B.data);

printf ("A:\t");

printSet (A);

printf ("B:\t");

printSet (B);

putchar ('\n');

printf ("A∩B:\t");

setIntersection (A, B, AIB);

printSet (AIB);

printf ("A∪B:\t");

setUnion (A, B, AUB);

printSet (AUB);

printf ("A\B:\t");

setComplement (A, B, ACB);

printSet (ACB);

getch (); /*屏幕暂留*/

return 0;

}


文章标题:c语言函数集合交集 c语言求集合的交集
本文路径:http://scyanting.com/article/doopojh.html