数据结构算法设计与实现指导(下)ppt

数据结构算法设计与实现指导(下)ppt

ID:27681447

大小:1.37 MB

页数:125页

时间:2018-12-05

数据结构算法设计与实现指导(下)ppt_第1页
数据结构算法设计与实现指导(下)ppt_第2页
数据结构算法设计与实现指导(下)ppt_第3页
数据结构算法设计与实现指导(下)ppt_第4页
数据结构算法设计与实现指导(下)ppt_第5页
资源描述:

《数据结构算法设计与实现指导(下)ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构算法设计与实现指导(下)李岩芳何巍主编实验五:实验目的及要求理解特殊的线性结构数组的抽象数据类型的定义,及在C语言环境中的表示方法。理解数组的基本操作的算法,及在C语言环境中一些主要基本操作的实现。在C语言环境下实现数组的应用操作:①用基本操作集定义一个三维数组(如A[3][4][2]),并输出。②利用三元组存储数组元素,并实现其转置。实验内容1.定义一个三维数组定义存储结构初始化一个N维数组销毁一个N维数组查找某个数组元素的位置取出某个数组元素为指定下标元素赋值2.利用三元组顺序表存储稀疏矩阵,实现其转置三元组存储结构创建一个稀疏矩阵销毁一个稀疏矩阵输出一个稀

2、疏矩阵稀疏矩阵转置定义三维数组退出稀疏矩阵主函数N维数组定义//定义数组维数最大为8维。#defineMAX_ARRAY_DIM8#defineERROR0#defineOVERFLOW-2#defineUNDERFLOW-2#defineOK1typedefintElemType;typedefintStatus;//数组的结构这里用到了三个概念:dim:维数;bounds:每一维的维界;constants:数组映像函数常量基址,即当某维元素下标加1或减1时,存放数据元素的地址变动的空间。N维数组定义假如有一个三维数组,即dim=3,每一维的维界分别为:bounds[

3、0]=3,bounds[1]=4,bounds[2]=2,则每维的数组映像函数常量基址为:Constants[2]=1,Constants[1]=bounds[2]*constantds[2]=2*1=2,Constants[0]=bounds[1]*constantds[1]=4*2=8。这个三维数组表示为:A[3][4][2],是一个3页4行2列的数组。typedefstruct{ElemType*base;intdim;int*bounds;int*constants;}Array;初始化数组注意::根据数组的维数及维界,开辟存储空间,定义数组映像函数常量基址。S

4、tatusInitArray(Array*A,intdim,...){intelemtotal=1,i;va_listap;if(dim<1

5、

6、dim>MAX_ARRAY_DIM)returnERROR;(*A).dim=dim;(*A).bounds=(int*)malloc(dim*sizeof(int));if(!(*A).bounds)exit(OVERFLOW);va_start(ap,dim);for(i=0;i

7、ERFLOW;elemtotal*=(*A).bounds[i];}va_end(ap);(*A).base=(ElemType*)malloc(elemtotal*sizeof(ElemType));if(!(*A).base)exit(OVERFLOW);(*A).constants=(int*)malloc(dim*sizeof(int));if(!(*A).constants)exit(OVERFLOW);(*A).constants[dim-1]=1;for(i=dim-2;i>=0;--i)(*A).constants[i]=(*A).bounds[i+1]

8、*(*A).constants[i+1];returnOK;}销毁数组StatusDestroyArray(Array*A){if(!(*A).base)returnERROR;else{free((*A).base);(*A).base=NULL;}if(!(*A).bounds)returnERROR;销毁数组else{free((*A).bounds);(*A).bounds=NULL;}if(!(*A).constants)returnERROR;else{free((*A).constants);(*A).constants=NULL;}returnOK;}查

9、找某个数据元素的位置算法功能:参数ap指示某个数组元素的各下标值,如(2,3,1)表示第3页第4行第2列的数据元素。StatusLocate(ArrayA,va_listap,int*off){inti,ind;*off=0;for(i=0;i

10、

11、ind>=A.bounds[i])returnOVERFLOW;*off+=A.constants[i]*ind;}returnOK;}取出指定下标的数据元素算法思想:通过Locate()函数查找指定下标的数据元素,如

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。