#ifndef-Vector-Henum boolean {FALSE,TRUE};typedef enum boolean Bool;typedef int ElementType ;struct vector{ ElementType *elements; int ArraySize; int VectorLength;};typedef struct vector Vector;void GetArray(Vector*);void InitVector(Vector*,int sz);ElementType GetNode(Vector*v,int i);void FreeVector(Vector*);int Find(Vector*,ElementType);Bool Remove(Vector*,int i);#endif以上是工程里的头文件#include<Vector>void GetArray(Vector *V){ V->element=(ElementType*)malloc(sizeof(ElementTyepe)*V->Arraysize); if(V->element==NULL) printf("Memory Allocation Error!\n");}void InitVector (Vector*V,int sz) /*初始化一个数组,建立一个最大长度为sz的数组*/{ if(sz<=0) printf("当前没有可用大小\n"); else { V->ArraySize=sz; v->VectorLength=0; GetArray(V); }}ElementType GetNode(Vector*V,int i) /*取向量中的第i个节点,若存在,则返回该结点的值;否则返回NULL*/{ return(i<0||i>=V->VectorLength)?NULL:V->elements[i];}void FreeVector(Vector*V) /*释放向量存储空间*/{ free(V->elements); int Find(Vector*V ElementType x) /*查找值为x的的结点,若找到,则返回结点序号;否则返回-1*/ { int i; for (i=0;i<V->elements[i]==x) if(V->elements[i]==x) return i; return -1; }void Bool Insert(Vector *V,ElementTypex,int i) /*在向量第i个位置插入值为x的结点,成功返回TURE,否则返回FALSE*/{ int j; if(V->VectorLength==V->ArraySize) { printf("向量储存空间已满\n"); return FALSE; } else { for(j=V->VectorLength-1;j>=i;j--) V->elements[j+1]=V->elements[j]; V->element[i]=x; V->VectorLength++; return TURE; }}Bool Remove(Vecor *V,int i){ int j; if(V->VectorLength==0) { printf("向量为空\n") return FALSE; } else if (i<0||i>V->VectorLength-1) { printf("删除位置错误\n"); return FALSE; } else for(j=i;j<V->VectorLength-1;j++) V->elements[j]=V->elements[j+1]; V->VectorLength--; return TURE;}Vector *Union(Vector *Va,Vector *Vb){ int m,n,i,j,k; int x; Vector *Vc=(Vector)malloc(sizeof(Vector)); n=Va->VectorLength; m=Vb->VectorLength InitVector(Vc,m+n); j=0; for(i=0;i<n;i++) {x=GetNode(Va,i); Insert(Vc,x,j); j++; } for(i=0;i<m;i++) { x=GetNode(Vb,i); k=Find(Va,x); if(k==-1) { Inseert(Vc,x,j); j++; } } return Vc;}Vector *Intersection(Vector *Va,Vector *Vb){ int m,n,i,k,j; ElementType x; Vector *Vc=(Vector *) malloc(sizef(Vector)); n=Va->VectorLength; m=Vb->VectorLength; InitVector(Vc,(m>n)?n:m); i=0; j=0; while(i<m) { x=GetNode(Vb,i); k=Find(Va,x); if(k!=-1) {Insert(Vc,x,j);j++;} i++; } return Vc;}int main(){ int m,n,i,j; int x, z; Vector *Va; Vector *Vb; printf("输入第一个集合\n"); for(i,i<m,i++) { scanf("%d",&x); Insert(Vector *Va,x, i); }printf("输入第二个集合\n"); for(j,j<n,j++) { scanf("%d",&x); Insert( *Vb,x, j) } Vc=Union( *Va,*Vb) //集合的并 InitVector(*Vc, z) InitVector(Vc,m+n); printf("集合的并\n"); for(i=0,i<z,i++) printf("%d",Vc->element[i]); Vc=Intersection(*Va, *Vb) //集合的交 InitVector( *Vc, z) InitVector (Vc,(m>n)?n:m); printf("集合的交\n"); printf("%d",Vc->element[i]); return 0;}这是cpp里的代码
目前暂无任何回答
- 0 回答
- 0 关注
- 1439 浏览
添加回答
举报
0/150
提交
取消