数据结构
数据结构
第五章数组和广义表 ■5.1数组的定义 ■5.2数组的顺序表示和实现 ■5.3矩阵的压缩存储 5.3.1特殊矩阵 5.3.2稀疏矩阵 5.4广义表的定义 5.5广义表的存储结构
第五章 数组和广义表 ◼ 5.1 数组的定义 ◼ 5.2 数组的顺序表示和实现 ◼ 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵 5.4 广义表的定义 5.5 广义表的存储结构
数组和广义表可看成是一种特殊的线性表,其 特殊在于,表中的数所元素本身也是一种线性 表。 5.1数组的定义 数组是我们最熟悉的数据类型,在早期的高 级语言中,数组是唯一可供使用的数据类型 由于数组中各元素具有统一的类型,并且数组 元素的下标一般具有固定的上界和下界,因此, 数组的处理比其它复杂的结构更为简单。多维 数组是向量的推广。例如,二维数组 a11a12a1n a21a22. a2n Amn Aml am2.amn
数组和广义表可看成是一种特殊的线性表,其 特殊在于,表中的数所元素本身也是一种线性 表。 5.1 数组的定义 数组是我们最熟悉的数据类型,在早期的高 级语言中,数组是唯一可供使用的数据类型。 由于数组中各元素具有统一的类型,并且数组 元素的下标一般具有固定的上界和下界,因此, 数组的处理比其它复杂的结构更为简单。多维 数组是向量的推广。例如,二维数组: a11 a12 . a1n a21 a22 . a2n . . . . am1 am2 . amn Amn =
可以看成是由个行向量组成的向量,也可以看成是 个列向量组成的向量。 在C语言中,一个二维数组类型可以定义为其分量 类型为一维数组类型的一维数组类型,也就是说 typedef elemtype array2[m][n]; 等价于: typedef elemtype array1[n]; typedef array1 array2[m]; 同理,一个n维数组类型可以定义为其数据元素为n 1维数组类型的一维序组类型。 数组一旦被定义,它的维数和维界就不再改变。因 此,除了结构的初始化和销毁之外,数组只有存取 元素和修改元素值的操作
可以看成是由个行向量组成的向量,也可以看成是 个列向量组成的向量。 在C语言中,一个二维数组类型可以定义为其分量 类型为一维数组类型的一维数组类型,也就是说, typedef elemtype array2[m][n]; 等价于: typedef elemtype array1[n]; typedef array1 array2[m]; 同理,一个n维数组类型可以定义为其数据元素为n- 1维数组类型的一维序组类型。 数组一旦被定义,它的维数和维界就不再改变。因 此,除了结构的初始化和销毁之外,数组只有存取 元素和修改元素值的操作
5.2数组的顺序表示和实现 由于计算机的内存结构是一维的,因此用 一维内存来表示多维数组,就必须按某种 次序将数组元素排成一列序列,然后将这 个线性序列存放在存储器中。 又由于对数组一般不做插入和删除操作 也就是说,数组一旦建立,结构中的元素 个数和元素间的关系就不再发生变化。因 此,一般都是采用顺序存储的方法来表示 数组
5.2 数组的顺序表示和实现 由于计算机的内存结构是一维的,因此用 一维内存来表示多维数组,就必须按某种 次序将数组元素排成一列序列,然后将这 个线性序列存放在存储器中。 又由于对数组一般不做插入和删除操作, 也就是说,数组一旦建立,结构中的元素 个数和元素间的关系就不再发生变化。因 此,一般都是采用顺序存储的方法来表示 数组