数据结构第五章:数组与广义表的存储与定义

需积分: 0 3 下载量 66 浏览量 更新于2024-07-31 收藏 519KB PDF 举报
"本资源为《数据结构》课程的第五章课件,主要讲解数组与广义表的相关知识,适用于学习数据结构的学员,教材为清华大学出版社出版的《数据结构》(C语言版本),作者为严蔚敏。" 在数据结构中,数组是一种基本且重要的数据组织形式,它允许我们存储和访问相同类型的数据集合。本章节详细阐述了数组的存储和操作方法。 首先,数组的顺序存储方式有两种常见的主序:以列序为主序和以行序为主序。以列序为主序的方式常见于MATLAB中,数据按列优先存储,而以行序为主序的方式则在C语言中更为常见,数据按行优先存储。这两种存储方式在处理二维数组时有不同的内存布局,影响了访问效率和编程时的逻辑。 接着,课件介绍了数组的定义,包括一维数组和二维数组。一维数组可以看作是线性表的数组实现,而二维数组则是多维数组的一种,可以理解为由多个一维数组构成的矩阵。在C语言中,可以通过typedef定义不同类型的一维和二维数组,例如,定义一个类型为`ElemType`的一维数组`Array1`,以及一个元素为`Array1`类型的二维数组`Array2`。 在实际编程中,数组的维数和维界的确定是非常关键的。一旦定义,这些属性通常是不变的。数组的主要操作包括初始化、元素的存取和修改。需要注意的是,数组不同于动态数据结构,其大小在声明时必须指定,并且在程序运行过程中通常无法改变。 此外,课件还展示了如何利用预处理器宏定义来创建具有固定尺寸的多维数组。例如,通过`#define N1 2`,`#define N2 3`等定义数组的维度,然后定义`typedef int DataType;`,以及`typedef DataType ARR1[N4];`和`typedef ARR1 ARR2[N3];`,这等价于定义了一个`int`类型的三维数组`ARR2`。这种方式使得代码更具可读性和灵活性。 最后,广义表是数组的扩展,它可以表示具有复杂结构的数据,比如链式存储的表,其中的元素可以是简单的数据或其它广义表。虽然课件中没有详细展开广义表的内容,但在数据结构的学习中,广义表是理解递归和复杂数据结构的重要概念,通常包括线性表、链表、树等结构。 这一章的内容涵盖了数组的基本概念、存储方式、定义与操作,以及与广义表的关联,对于理解和应用数据结构有极大的帮助。通过深入学习这部分知识,学生能够更好地掌握数据结构的基础,为后续的算法设计和分析打下坚实基础。