集合运算符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语言和集合运算程序介绍到此结束。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。

相关文章

发表新评论