文档详情

三维数组的顺序存储与实现.doc

发布:2017-06-07约1.56千字共5页下载文档
文本预览下载声明
三位数组的顺序存储与实现 #includestdio.h #includestdlib.h #define ERROR 0 #define OK 1 typedef int Status; typedef int datatype; typedef struct { datatype *base; int index[3]; int c[3]; }array; Status InitArray(array *A,int b1,int b2,int b3) { int elements; if(b1=0||b2=0||b3=0)return ERROR; A-index[0]=b1; A-index[1]=b2; A-index[2]=b3; elements=b1*b2*b3; A-base=(datatype*)malloc(elements*sizeof(datatype)); if(!(A-base))return(0); A-c[0]=b2*b3; A-c[1]=b3; A-c[2]=1; //error: A-c[0]=1; return OK; } Status value(array A,int i1,int i2,int i3,datatype x) { int off; if(i10||i1=A.index[0]||i20||i1=A.index[1]||i30||i1=A.index[2]) return ERROR; off=i1*A.c[0]+i2*A.c[1]+i3*A.c[2]; x=*(A.base+off); return OK; } Status assign (array A,datatype e, int i1,int i2,int i3) { int off; if(i10||i1=A.index[0]||i20||i2=A.index[1]||i30||i3=A.index[2]) return ERROR; off=i1*A.c[0]+i2*A.c[1]+i3*A.c[2]; *(A.base+off)=e; return OK; } void main() { int i,j,k,y=1; array X; InitArray(X,3,4,5); for (i=0;iX.index[0];i++) { for (j=0;jX.index[1];j++) //error: for (j=0;j=X.index[0];j++) for (k=0;kX.index[2];k++) //error: for (k=0;k=X.index[2];k++) { assign(X,y++,i,j,k); } } for (i=0;iX.index[0];i++) { printf(^^^^^^^[%d]^^^^^^^\n,i+1); for(j=0;jX.index[1];j++) { for(k=0;kX.index[2];k++) //error: for(k=0;k=X.index[2];k++) { value (X,i,j,k,y); printf(%4d,y); //erase: printf(%2d,y); } printf(\n); } } }
显示全部
相似文档