集合运算符c语言(集合运算程序)
本文讲的是集合运算符的C语言以及集合运算程序的相应知识点。希望对你有帮助,也别忘了收藏这个站点。
这篇文章的列表: 1.C语言中的集合运算 2.检索:设置操作C语言 3.用C语言写两套的运算。 4、C语言集合操作 c语言中的集合运算 可以用线性表模拟一个集合,从两个线性表中抽取相同的数做交集,所有元素就是并集。还可以使用C重载运算符来查找并集等等。
搜索:设置操作C语言 #包含stdio.h
#包含stdlib.h
#包含字符串. h
typedef结构集
{
int * array
int len
}设置;
Set* new_set( int len)
{
Set * s =(Set *)malloc(sizeof(struct Set));
s-len = len;
s-array =(int *)malloc(sizeof(int)* len);
memset( s-array,0,sizeof(int)* len);
返回s;
}
void delete_set( Set **s)
{
free((* s)-array);
免费(* s);
* s = NULL
}
int是_belong_to_set( Set *a,int n)
{
int I;
for(I = 0;ia-len;我)
{
if ( n ==数组[i])
返回1;
}
返回0;
}
Set* set_diff( Set *a,Set *b)
{
int i=0,clen = 0;
set * c = new _ set(a-len);
c-len = clen;
for(I = 0;ia-len;我)
{
如果(!is_belong_to_set(b,a-array[i]))
{
c数组[clen] = a数组[I];
clen
c-len = clen;
}
}
返回c;
}
集合*集合_联合(集合*a,集合*b)
{
int i,clen = 0;
set * c = new _ set(a-len b-len);
c-len = clen;
for(I = 0;ia-len | | I b-len;我)
{
if ( ia-len)
如果(!is_belong_to_set( c,a-array[i]))
{
c数组[clen] = a数组[I];
clen
c-len = clen;
}
中频(ib-len)
如果(!is_belong_to_set( c,b-array[i]))
{
c数组[clen] = b数组[I];
clen
c-len = clen;
}
}
返回c;
}
无效排序(集合*a)
{
int i,j;
for(I = 0;ia-len;我)
for(j = I ^ 1;ja-len;j)
if ( a数组[i] a数组[j])
{
int t = a-array[I];
a数组[i] = a数组[j];
a-array[j]= t;
}
}
int main()
{
int alen = 0,blen = 0,I;
Set *a,*b,* c;
scanf( "%d ",alen);
a = new _ set(alen);
for(I = 0;ialen我)
scanf( "%d ",a-array[I]);
scanf( "%d ",blen);
b = new _ set(blen);
for(I = 0;iblen我)
scanf( "%d ",b数组[I]);
Set *s1 = set_diff( a,b);
Set *s2 = set_diff( b,a);
c = set_union( s1,S2);
排序(c);
for(I = 0;IC-len;我)
printf( "%d ",c-array[I]);
printf(" \ n ");
delete _ set(a);
delete _ set(b);
delete _ set(c);
delete _ set(S1);
delete _ set(S2);
}
用C语言写两套的运算。 记得领养
聚集
#包含" stdafx.h "
#包含stdio.h
Int fun(int a,int M[])//判断元素是否在集合中并返回1,返回0。
{
int I = 0;
for(I = 0;M[i]!=0;我)
if(a==M[i])返回1;
返回0;
}
Void get(int M[])//输入集合元素。
{
int I = 0;
printf(" \ n ");
做
{
scanf("%d ",M[I]);
}
while(M[i-1]!=0);
}
Void print(int M[])//打印集合
{
int I = 0;
printf(" \ n ");
while(M[i]!=0)
{
printf("%d ",M[I]);
}
printf(" \ n ");
}
void clear(int M[])
{
int I = 0;
做
{
m[I]= 0;
}
while(M[i]!=0);
}
Voidfun _ sum (int a [],int b [],int c[])//集合a和集合b的并集
{
int i,j;
for(I = 0;一个[我]!=0;我)
{
c[I]= A[I];
}
for(j = 0;B[j]!=0;j)
{
如果(!fun(B[j],C))C[I]= B[j];
}
}
Voidfun _ sub (int a [],int b [],int c[])//集合A和集合b的差集。
{
int i,j = 0;
for(I = 0;一个[我]!=0;我)
{
如果(!fun(A[i],B))C[j]= A[I];
}
}
Voidfun _ j (int a [],int b [],int c[])//集合A与集合b的交集。
{
int i,j = 0;
for(I = 0;一个[我]!=0;我)
{
if(fun(A[i],B))C[j]= A[I];
}
}
int main(int argc,char* argv[])
{
int A[50]={0},B[50]={0},C[100]= { 0 };
Printf("请输入以0结尾的set a \ n ");
得到(A);
Printf("请输入以0结尾的集合b \ n ");
get(B);
fun_sum(A,B,C);
Printf("集合A和集合B的并集:\ n ");
打印(C);
清晰(C);
fun_sub(A,B,C);
Printf("集合A和集合B的区别:\ n ");
打印(C);
清晰(C);
fun_J(A,B,C);
Printf("集合A和集合B的交集:\ n ");
打印(C);
返回0;
}
c语言集合操作 Deletetable函数有两个地方将pcollelm写成collelm。
加法函数体第4行没有加号。
在加法函数中,三次调用AppendToTable时写了三个参数,但是AppendToTable只声明了两个参数。
Multiply的返回类型是collelm,应该是pcollelm。
Multiply的函数参数是x,y,但是在函数体里说的是a和b。
在Multiply中调用AppendToTable时,不需要在p前面写类型。
main的第三行,p = collp改成p = collp
main中的case 2调用Deletetable时,第一个参数是Collelm类型的colla,但是Deletetable对应的参数类型是Collelm *。
集合运算符C语言和集合运算程序介绍到此结束。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。
最后更新于 2023-10-06 13:53:48 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章