用C语言求两个整数集合的并集.

Python016

用C语言求两个整数集合的并集.,第1张

有a、b 2个数组,把b中每个元素分别和a中每个元素比较,若无重复,则加入数组a。这样的话一个for语句,再加一个功能函数(也可以写在主函数中)就好。

#include <stdio.h>

#include <string.h>

int main(int argc, char* argv[])

{

char a[20],b[20]

int n,m,j,k

printf ("请输入第一个集合内容\n")

scanf ("%s",a)

j=strlen(a)

printf ("请输入第二个集合内容\n")

scanf ("%s",b)

k=strlen(b)

char c[20]="",d[40]=""

for (n=0n<jn++)

printf("\n%s\n",c)

index=0

for (n=0n<jn++)

{

for(m=0m<indexm++)

if(d[m] == a[n])

flag=0

d[index++]=b[n]

}

flag=1

} printf ("集合的并集是:")

printf("\n%s\n",d)

return 0

}

扩展资料:

集合中元素的数目称为集合的基数,集合A的基数记作card(A)。当其为有限大时,集合A称为有限集,反之则为无限集。一般的,把含有有限个元素的集合叫做有限集,含无限个元素的集合叫做无限集。

表示

假设有实数x <y:

①[x,y] :方括号表示包括边界,即表示x到y之间的数以及x和y;

②(x,y):小括号是不包括边界,即表示大于x、小于y的数。

参考资料来源:百度百科-集合

用两个数组表示集合元素

对于AUB=C

先把A的数据 复制到C里面

然后 遍历B数组,每个元素和A对比,如果存在 则略过,否则添加到C中。

等到的C

即为并集

struct Link *Union(struct Link *head1, struct Link *head2)

{

struct Link *p1 = head1->next, *p2 = head2->next

struct Link *head, *p, *q

head = (struct Link *)malloc(sizeof(struct Link))

head->next = NULL

p = head

while ((p1 != NULL) &&(p2 != NULL))

{

q = (struct Link*)malloc(sizeof(struct Link))

q->next = NULL

if (p1->data == p2->data)

{

q->data = p1->data

p1 = p1->next

p2 = p2->next

}

else if (p1->data <p2->data)

{

q->data = p1->data

p1 = p1->next

}

else

{

q->data = p2->data

p2 = p2->next

}

p->next = q

p = q

}

if(p1 != NULL){

while(p1 != NULL){

q = (struct* Link)malloc(sizeof(struct Link))

q->next = NULL

q->data = p1->data

p1 = p1->next

p->next = q

p = q

}

}else if(p2 != NULL){

q = (struct* Link)malloc(sizeof(struct Link))

q->next = NULL

q->data = p2->data

p2 = p2->next

p->next = q

p = q

}

return head

}

//适用于p1,p2链表都没有重复data的情况