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