- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章数组与的广义表
第5章 数组与广义表
教学要点
数组是一种非常重要的基本数据集合类型,一个数组是由一组相同数据类型的数据元素
组成的集合,数据元素按次序存储于一个地址连续的内存空间中。数组元素的类型可以是简
单的基本类型,也可以是复杂的自定义类型。数组是其他数据结构实现顺序存储的基础,一
维数组可以看作是一个顺序存储结构的线性表,二维数组则可视为数组的数组。一般采用二
维数组存储矩阵,但这种方法存储特殊矩阵和稀疏矩阵的效率较低,需采用一些特殊方法进
行压缩存储。线性表结构可以是简单的数组,也可以扩展为复杂的数据结构—广义表。
本章介绍数组、稀疏矩阵和广义表的基本概念,并详细讨论稀疏矩阵和广义表的存储结
构。
本章在 Visual Studio 中用名为matrix 的类库型项目实现有关数据结构的类型定义,用名
为 matrixtest 的应用程序型项目实现相应类型数据结构的测试和演示程序。
建议本章授课 4 学时,实验 3 学时。
5.1 数组
数组(array )是一种基本的数据集合类型,是其他数据结构实现顺序存储的基础。一个数组是由
一组相同数据类型的数据元素组成的集合,元素的类型可以是简单的基本类型,也可以是复杂的抽象
类型,但不论元素类型如何,数组元素都按次序存储于一个地址连续的内存空间中。某个数组元素在
数组中的位置可以通过该元素的序号确定,这个序号称之为数组元素的下标,简称数组下标。为了物
理上访问某数组元素,可以通过它的下标,再加上数组的起始地址,就可找到存放该元素的存储地址。
数组可以看成二元组下标,值 的一个集合,以后我们还会看到二元组键,值 的集合。
数组下标的个数称为数组的维数,有一个下标的数组是一维数组,有两个下标的数组就是二维数
组,以此类推。C#编程语言中数组的工作方式与在大多数其他流行语言中的工作方式类似,但还是有
一些差异应引起注意。C#支持一维数组、多维数组(矩形数组)和数组的数组(交错的数组)。 C#中
数组是引用类型变量,只有用 new 操作符为数组分配空间后,数组才真正占有实际的存储空间,数组
元素的下标从零开始计算。
5.1.1 一维数组
一维数组是由 n (n1 )个相同数据类型的数据元素a , a , …, a 构成的有限序列,其中 n 称为数
0 1 n-1
组的长度。数组记作:
Array = { a ,a ,a ,…,a }
0 1 2 n-1
数组元素依次占用一块地址连续的内存空间,每两个相邻数据元素之间都有直接前驱和直接后继
的关系。当系统为一个数组分配内存空间时,数组所需空间的大小及其首地址就确定下来。通过数组
名加下标的形式,可以访问数组中任意一个指定的数组元素。假设数组的首地址为 Addr(a0) ,每个数
据元素占用 c 个存储单元,则第 i 个数据元素的地址为:
数据结构与算法(C#语言版)
2
Addr(a ) Addr(a ) i c
i 0
根据数组元素的下标就可计算出该元素的存储地址,并且计算的复杂度是 O(1) ,具有这种特性的
存储结构称为随机存储结构,可见,数组是一种随机存储结构。
高级程序语言中存在两种为数组分配内存空间的方式:编译时分配数组空间和运行时分配数组空
间:
编译时分配数组空间:程序声明数组时给出数组元素类型和元素个数,编译程序为数组分配
好存储空间。当程序开始运行时,数组即获得系统分配的一块地址连续的内存空间。
运行时分配数组空间:程序声明时,仅需说明数组元素类型,不指定数组长度。当程序运行
中需要使用数组时,向系统申请指定长度数组所需的存储单元空间。当不再需要这个数组时,
需要向系统归还所占用的内存空间。
在 C 语言
文档评论(0)