网站大量收购闲置独家精品文档,联系QQ:2885784924

第7章 数组 零基础学数据结构.pptVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 数组 数组是一种扩展的线性数据结构。线性表、栈、队列、串的数据元素都是不可再分的原子类型,而数组中的数据元素是可以再分的。数组可以分为一维数组和多维数组,一维数组中的元素是由原子构成的,多维数组中的元素又是一个线性表。因此,数组是一种特殊的线性表。 7.1 数组 数组是一种特殊的线性表,表中的元素可以是原子类型,也可以是一个线性表。本节主要介绍数组的定义和数组的抽象数据类型。 7.1.1 数组的定义 数组是由n个类型相同的数据元素组成的有限序列。其中,这n个数据元素占用一块地址连续的存储空间。数组中的数据元素可以是原子类型的,如整型、字符型、浮点型等,这种类型的数组称为一维数组;也可以是一个线性表,这种类型的数组称为二维数组。二维数组可以看成是线性表的线性表。 7.1.2 数组的抽象数据类型 1.数据对象集合 2.基本操作集合 7.2 数组的顺序表示与实现 一般情况下,不对数组进行插入和删除操作。如果建立了数组,则数组的维数与各维的长度不再改变,因此,数组采用的是顺序存储方式。本节的主要学习内容包括数组的顺序存储结构及顺序存储结构下的操作实现。 7.2.1 数组的顺序存储结构 在计算机中,存储器的结构是一维(线性)的结构。数组是一个多维的结构,如果要将一个多维的结构存放在一个一维的存储单元里,就必须先将多维的数组转换成一个一维的线性序列,才能将其存放在存储器中。 7.2.1 数组的顺序存储结构 数组的顺序存储结构类型定义描述如下: #define MaxArraySize 3 #includestdarg.h /*标准头文件,包含va_start、va-arg、va_end宏定义*/ typedef struct { DataType *base; /*数组元素的基地址*/ int dim; /*数组的维数*/ int *bounds; /*数组的每一维之间的界限的地址*/ int *constants; /*数组存储映像常量基地址*/ }Array; 7.2.2 数组的基本运算 在顺序存储结构中,数组的基本运算实现如下所示。 (1)数组的初始化操作。 va_list的用法:?????? ?????? (1)首先在函数里定义一个va_list型的变量,这个变量是指向参数的指针; ????? (2)然后用va_start初始化变量刚定义的va_list变量,该函数的第二个参数是第一个可变参数的前一个参数,它是一个固定的参数; ?????? (3)然后用va_arg返回可变的参数,va_arg的第二个参数是要返回的参数的类型; ?????? (4)最后用va_end结束可变参数的获取。 7.2.2 数组的基本运算 (2)销毁数组操作。 void DestroyArray(Array *A) /*销毁数组。将动态申请的内存单元释放*/ { if(A-base) free(A-base); if(A-bounds) free(A-bounds); if(A-constants) free(A-constants); A-base=A-bounds=A-constants=NULL; /*将各个指针指向空*/ A-dim=0; } 7.2.2 数组的基本运算 (3)返回数组中指定的元素。 int GetValue(DataType *e,Array A,…) /*返回数组中指定的元素,将指定的数组的下标的元素赋值给e*/ { va_list ap; int offset; va_start(ap,A); if(LocateArray(A,ap,offset)==0) /*找到元素在数组中的相对位置*/ return 0; va_end(ap); *e=*(A.base+offset); /*将元素值赋值给e*/ return 1; } 7.2.2 数组的基本运算 (4)数组的赋值操作。 int AssignValue(Array A,DataType e,...) /*数组的赋值操作。将e的值赋给的指定的数组元素*/ { va_list ap; int offset; va_start(ap,e); if(LocateArray(A,ap,offset)==0) /*找到元素在数组中的相对位置*/ return 0; va_end(ap); *(A.base+offset)=e; /*将e赋值给该元素*/ return

文档评论(0)

smashing + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档