#include <stdio.h>
#include <stdlib.h>
int set_a[5] = {1, 3 ,5 ,9, 7} // 非 0 元素构成的集合
int set_b[5] = {1, 5, 2 ,8, 4}
int set_c[10] ={0}
int isin(int a_or_b, int elem)
{
int *set_tmp
int cnt
switch(a_or_b)
{
case 1:
set_tmp = set_b
break
case 2:
set_tmp = set_a
break
default:
printf ( "parameter error!\n" )
}
for (cnt = 0 cnt < 5 cnt++)
{
if(set_tmp[cnt] == elem)
{
return 1
}
}
return 0
}
int main(int argc, char *argv[])
{
int cnt, cnt2 = 0
for (cnt = 0 cnt < 5 cnt++)
{
if(isin(1, set_a[cnt]) == 1) // 如果 集合 a 中的元素在集合 b 中
{
set_c[cnt2++] = set_a[cnt]
}
}
printf ( "The result of diff: \n" )
for(cnt = 0 set_c[cnt] != 0 cnt++) // 输出非 0 元素
{
printf ( "%d\t", set_c[cnt] )
}
putchar('\n')
return 0
}
亲是要这样做差运算吗?
#include<stdio.h>#include<stdlib.h>
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<'a')||(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
}
}
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)
getchar()
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)
}