《数据结构第五数组学习教案.pptx》由会员分享,可在线阅读,更多相关《数据结构第五数组学习教案.pptx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据结构数据结构(sh j ji u)第五数组第五数组第一页,共11页。数组数组的存贮(cn zh)方式第2页/共11页第1页/共11页第二页,共11页。二维数组的访问(fngwn):LOC(i,j)=LOC(0,0)+(b2*i+j)Lb2是第2维的大小第3页/共11页第2页/共11页第三页,共11页。多维数组访问(fngwn):LOC(j1,j2,jn)=LOC(0,0,0)+(b2*bn*j1 +b3*bn*j2+bn*jn-1+jn)L第4页/共11页第3页/共11页第四页,共11页。可变多维数组的实现可变多维数组的实现(shxin)(shxin)定义定义#define MAX_ARR
2、AY_DIM 8#define MAX_ARRAY_DIM 8typedef int ElemType;typedef int ElemType;typedef structtypedef structElemType *base;ElemType *base;int dim;int dim;int *bounds;int *bounds;int *constants;int *constants;Array;Array;第5页/共11页第4页/共11页第五页,共11页。初始化初始化int InitArray(Array&A,int dim,.)int InitArray(Array&A,in
3、t dim,.)if(dim MAX_ARRAY_DIM)return 0;if(dim MAX_ARRAY_DIM)return 0;A.dim=dim;A.dim=dim;A.bounds=(int*)malloc(dim*sizeof(int);A.bounds=(int*)malloc(dim*sizeof(int);if(!A.bounds)return 0;if(!A.bounds)return 0;int elemtotal=1;int elemtotal=1;va_list ap;va_list ap;va_start(ap,dim);va_start(ap,dim);for(
4、int i=0;i dim;i+)for(int i=0;i dim;i+)A.boundsi=va_arg(ap,int);A.boundsi=va_arg(ap,int);if(A.boundsi 0)return 0;if(A.boundsi=0;i-)for(i=dim-2;i=0;i-)A.constantsi=A.boundsi+1*A.constantsi+1;A.constantsi=A.boundsi+1*A.constantsi+1;return 1;return 1;第6页/共11页第5页/共11页第六页,共11页。定位定位(dngwi)(dngwi)int Locate
5、(Array A,va_list ap,int&off)int Locate(Array A,va_list ap,int&off)int ind;int ind;off=0;off=0;for(int i=0;i A.dim;i+)for(int i=0;i A.dim;i+)ind=va_arg(ap,int);ind=va_arg(ap,int);if(ind=A.boundsi)return if(ind=A.boundsi)return 0;0;off+=A.constantsi*ind;off+=A.constantsi*ind;return 1;return 1;第7页/共11页
6、第6页/共11页第七页,共11页。赋值int Assign(Array&A,ElemType e,.)int off;va_list ap;va_start(ap,e);if(!Locate(A,ap,off)return 0;va_end(ap);*(A.base+off)=e;return 1;第8页/共11页第7页/共11页第八页,共11页。取值取值int Value(Array A,ElemType e,.)int Value(Array A,ElemType e,.)int off;int off;va_list ap;va_list ap;va_start(ap,e);va_sta
7、rt(ap,e);if(!Locate(A,ap,off)return 0;if(!Locate(A,ap,off)return 0;va_end(ap);va_end(ap);e=*(A.base+off);e=*(A.base+off);return e;return e;第9页/共11页第8页/共11页第九页,共11页。课堂练习:1)定义一个三维数组,每个维度大小分别为2,3,4;2)用下标之和给三维数组赋值;3)输出(shch)三维数组所有元素的值,要求格式为:A123=6第10页/共11页第9页/共11页第十页,共11页。课后练习:实现三角(snjio)矩阵的赋值与取值。第11页/共11页第10页/共11页第十一页,共11页。