- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第5章 数组和广义表(6学时)
教学内容:数组的类型定义和表示方式;特殊矩阵和稀疏矩阵的压缩存储方法及运算的实现;教学要求: 1)了解数组的两种存储表示方法,并掌握数组在以行为主的存储结构中的地址计算方法。2)掌握对特殊矩阵进行压缩存储时的下标变换公式。3)了解稀疏矩阵的两种压缩存储方法的特点和适用范围,领会以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法。重点:对特殊矩阵进行压缩存储时的下标变换公式。难点:对特殊矩阵进行压缩存储时的下标变换公式。 C语言中的定义: typedef elemtype array2[m][n]; 等价于: typedef elemtype array1[n]; typedef array1 array2[m]; 同理,n维数组类型可以定义为其数据元素为n-1维数组类型的一维数组类型。 (1)以行序为主序(row major order) (2)以列序为主序(column major order) 计算二维数组元素地址的通用公式:设二维数组是A[c1..d1, c2..d2],这里c1,c2不一定是0。 例2:已知二维数组Am,m按行存储的元素地址公式是: Loc(ai,j)= Loc(a1,1)+[(i-1)*m+(j-1)]*K 按列存储的公式是? Loc(ai,j)=Loc(a1,1)+[(j-1)*m+(i-1)]*K (尽管是方阵,但公式仍不同) n维数组的数据元素存储位置的计算公式: 例如,三维数组Ai,j,k按“行优先顺序”存储,其地址计算函数为: LOC(ai,j,k)=LOC(a1,1,1)+[(i-1)*n*p+(j-1)*p +(k-1)]*d 数组中的任一元素可以在相同的时间内存取,即顺序存储的数组是一个随机存取结构。 数组的基本操作 (1)初始化 (2)销毁数组 (3)求元素地址 (4)取数组值 基本操作 (1)初始化 Status InitArray (Array A,int dim, ……){ //若维数dim和随后的各维长度合法,则构造数组A,并返回OKif (dim1 || dimMAX_ARRAY_DIM) return ERROR; A.dim=dim; A.bounds=(int * )malloc(dim *sizeof(int));if(!A.bounds) exit (OVERFLOW); //若各维长度合法,则存入A.bounds,并求出A的元素总数elemtotal=1;va_start(ap,dim); //ap为va_list类型,是存放变长参数表信息的数组 for (I=0; Idim; ++I){ A. bounds[I]=va_arg(ap,int); if(A.bounds[I]0) return UNDERFLOW; elemtotal * = A.bounds[I];}va_end(ap); A.base=(ElemType*)malloc(elemtotal*sizeof(ElemType)); if(!A.bounds) exit (OVERFLOW); //求映象函数的常数ci,并存入A.constants[i-1],i=1, …,dimA.constants =(int * )malloc(dim * sizeof(int));if(!A.onstants) exit (OVERFLOW);A.constants[dim-1]=1; //L=1,指针的增减以元素的大小为单位For (i=dim-2;i=0;--i)A.constants[i]= A.bounds[i+1]+ A.constants[i+1]return OK;} (2)销毁数组 Status DestroyArray (Array A){if (!A.base) return ERROR; free(A.base); A.base=NULL; if (!A.bounds) return ERROR; free(A. bounds); A. bounds =NULL;if (!A.constants) return ERROR; free(A. constants); A. constants=NULL;return OK;} (3)求元素地址 Status Locate (Array A,va_list ap, int off){//若ap指示的各下标合法,则求出该元素在A中相对地址offoff=0;for(i=0;iA.dim; ++i){ i
您可能关注的文档
最近下载
- 九级物理_第十三章内能与热机.ppt VIP
- 2024年教育综合333考研统考真题及解析.pdf VIP
- 综合与实践 数字编码 教案 2025人教版数学三年级上册.doc VIP
- 灵宝道情与道教文化.pdf VIP
- 企业财务共享中心建设以山西焦煤集团为例.docx VIP
- 2025至2030中国军事上的人工智能行业项目调研及市场前景预测评估报告.docx
- 2025考研教育学333真题及参考答案.docx VIP
- 关于绑架的小故事-绑架关起来的故事.docx VIP
- 2025年人教版三年级数学上册综合实践《数字编码》教案.pdf VIP
- 2.7《运动的快慢》(课件)四年级上册科学苏教版.pptx VIP
文档评论(0)