第6部分数组和广义表.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 数组和广义表 线性表、栈、队列及串都是特殊的线性结构。它们的共同点是数据元素都是原子型的、不可分的,即不会出现表中有表这种情况。线性表中的数据元素的类型不可能是线性表,同样栈中的数据元素的类型也不可能是栈,队列和串也是如此。数组和广义表也是特殊的线性结构,它特殊的地方就是数组中数据元素本身也是一个数组、广义表中数据元素本身也是广义表。 6.1 数组 数组作为一种数据结构跟其他的数据结构一样有两种存储结构及一些基本操作。 6.1.1 数组的定义 数组是有序数据的集合且数组中的每一个元素都属于同一个数据类型。数组的数据类型可以是基本的数据类型,如整型、字符型、实型等;也可以是构造类型的,如结构体类型、共用体类型、数组类型等。 6.1.2 数组的顺序存储结构 数据结构的存储类型一般分为顺序存储和链式存储。上面已经分析过数组宜采用顺序存储结构来存储数据,所以下面只介绍二维数组在顺序存储结构下的基本操作及其实现。先介绍一下数组的顺序存储方面的一些概念。 二维数组的表示:数组名[表达式1][表达式2],数组下标可以是常量、变量或表达式,数组下标从0开始,如a[1][1]表示第二行第二列的元素。还可以采用表达式作为数组下标如a[m-1][n-1]。数组的下标决定了数组元素存储的相对地址(相对于a[0][0]元素的位置)。 6.1.3 结构体描述 在C语言中数组是采用以行序为主序的存储方法对数组进行存储的,所以C语言中数组元素地址的关系是: Loc(A[i][j])=Loc(A[0][0])+(i×m+j)×size 6.1.4 数组的初始化 数组的初始化就是用一个指定的值对数组中的所有元素进行赋初值操作,初始化之后数组中的所有元素的值都是设置好的初始值。数组初始化操作的实现代码如下: void Init_Array(Array A,DataType data) { for(int i=0;iROW_MAXSIZE;i++) { for(int j=0;jCOL_MAXSIZE;j++) A.data[i][j]=data; } } 6.1.5 保存数据操作 数组的存数据操作就是将数组相应位置数据元素的值变为data与数组初始化操作不同的是:数组初始化是将所有的元素变为data而向数组中存数据的操作就不是这样。数组存数据操作的实现代码如下: void Write_Array(Array A,int row,int col,DataType data) { if(rowROW_MAXSIZE||colCOL_MAXSIZE||row1||col1) { printf(数组下标越界!); return; } else { A.data[row-1][col-1]=data; } } 6.1.6 读取数据操作 数组的读取数据操作很简单,就是返回要读取位置的元素的值,同样在读取之前需要对row和col进行检查,看看它们是否越界。数组读取数据操作的实现代码如下: DataType Read_Array(Array A,int row,int col) { if(rowROW_MAXSIZE||colCOL_MAXSIZE||row1||col1) { printf(数组下标越界!); } else { return A.data[row-1][col-1]; } } 6.1.7 修改数据操作 修改数组元素的操作与对数组元素的操作相似,都是改变数组相应位置的值。修改数组元素的操作还返回原来的值。修改数组元素的操作实现代码如下: DataType Change_Array(Array A,int row,int col,DataType data) { if(rowROW_MAXSIZE||colCOL_MAXSIZE||row1||col1) { printf(数组下标越界!); } else { DataType data1=A.data[row-1][col-1]; A.data[row-1][col-1]=data; return data1; } } 6.1.8 用堆存储方式存储数组 数组的行数和列数是数组的一个非常重要的属性,即不同的数组行数和列数很可能不同,所以可采取堆存储的方式对数组的大小进行动态分配和回收。堆存储方式数组结构体定义如下: typedef char DataType; typedef struct {

文档评论(0)

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

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

1亿VIP精品文档

相关文档