文档介绍:第三章聚合数据类型与操作函数
在本章中,将进一步讨论C++中较为复杂的聚合与派生数据类型及操作函数。
本章目的:
·了解线性表结构数据处理及数组类型
·掌握指针类型变量及地址计算方法
·初步掌握函数定义与调用机制
·了解结构类型及链表结构数据处理
数组类型与简单线性表处理
线性表结构的C++处理方法
线性表在内存中存放的形式有两种:
物理存储连续:各线性表元素在内存中是连续存放的。其中每个元素都包含相同的数据顶,即各线性表元素所占用的内存区域大小相同,在某一元素的内存地址上加上该内存区域的大小即可得到其下一个元素的内存地址。。
数据元素1 数据元素2 数据元素3 数据元素n
数
据
1
数
据
2
数
据
3
数
据
n
数
据
1
数
据
2
数
据
3
数
据
n
数
据
1
数
据
2
数
据
3
数
据
n
数
据
1
数
据
2
数
据
3
数
据
n
物理连续的线性表的一般结构
该方法使用方便,存储经济,访问方便,缺点是要占用一块较大的连续内存区域,且数据的插入等操作较为困难。
2、逻辑上连续:在这种线性表中,各元素项都包含两个部分:一个数据项和一个指针项。
在数据项中,可以包含一个或多个相同或不同类型的数据,每个线性表元素中所包含数据的个数称为线性表的长度,但是在数据项中包含的数据的个数及相应的数据类型对线性表内的所有元素项都是相同的。
在指针项中,根据需要可以包含一个或多个指向线性表内其他元素的指针。
物理不连续线性表的一般结构
该方法为为编程处理带来较高的效率。
线性表可以用一个名称(标识符)进行标识,通常该标识符指向线性表的第一个元素项。线性表可以为空,则该标识符不指向任何元素项。
这种线性表可以方便地访问、插入、删除一个元素,也可以提供完善的查询、排序、显示等功能以及线性表状态监控函数等。最常见的线性结构是数组。
数组的定义与使用
数组是具有相同数据类型的一组变量的集合,它具有有序性和均匀性的特点。一维数组在内存中是连续存放的,数组中的第一个元素存储在数组的最低地址,该地址即是数组的地址,用数组名来指示(指针)。在该线性表结构中,每个元素项只含有一个数据项,且性相同,即数据类型和数据长度相同。因此数组中的所有数据对象拥有共同的名字,其中每个特定的数据元素用相应的下标来进行确定。
一维数组的定义如下:
data_type varible[size];
注意:size必须大于等于1,用于定义范围大小的量必须是一个常量表达式。
在对数组中的对象进行访问时,使用如下形式:
varible[index]
其中varible是数组的标识符,index是对象所对应的下标。特别值得注意的是,在C++中数组元素的下标由0开始,而不是由1开始。C++是一种不进行下标越界检验的语言。因此在程序中使用了非法的数组下标来进行数据读写,编译系统将不认为是错误,而且也能进行读写操作。若进行读,读出的数据是无法预测的,若进行写,则有可能错误地修改其他数据,导致程序瘫痪。为避免这样的情况,程序