C语言数据结构教程:数组的定义与存储

需积分: 9 0 下载量 198 浏览量 更新于2024-07-28 收藏 1.08MB PPT 举报
"这篇教程是关于数据结构的,专注于C语言中的数组部分,出自厦门大学软件专业教程。教程涵盖了数组的定义、顺序表示与实现,以及矩阵的压缩存储方法,特别是针对特殊矩阵的下标变换和稀疏矩阵的压缩存储。" 在数据结构的学习中,数组是一个基础且重要的概念。数组是一种数据结构,它包含相同类型的数据元素集合,这些元素可以通过一个唯一的标识符——下标来访问。在C语言中,数组定义如下: 1. 一维数组的定义形式为 `ElemType A[n]`,其中 `ElemType` 是数组元素的数据类型,`n` 是数组的大小,表示有 `n` 个连续存储的元素。 2. 二维数组的定义形式为 `ElemType A[m][n]`,表示一个由 `m` 行 `n` 列组成的数组。 3. 更高维度的数组可以通过嵌套定义,例如 `ElemType A[n1][n2]...[nk]`,形成一个 `k` 维数组。 数组可以视为线性表,其中一维数组的每个元素相当于线性表中的一个节点。对于多维数组,如二维数组,可以将其视为一个线性表,通过不同的排列方式(按行或按列)将元素顺序存储。数组的一个关键特性是其下标通常从0开始,并且数组的大小在定义后不能改变。 数组的顺序表示是指在内存中,数组的元素是连续存储的。对于二维数组,有两种常见的顺序存储方式:行优先存储(按行填充)和列优先存储(按列填充)。行优先存储意味着先填充第一行的所有元素,然后是第二行,以此类推;列优先存储则相反,先填充第一列的所有元素,再填充第二列,依此类推。 在处理特殊矩阵时,如稀疏矩阵(大部分元素为零的矩阵),为了节省存储空间,可以采用压缩存储的方法。常见的压缩方式是使用三元组(行索引,列索引,值)来存储非零元素。对于矩阵运算,如加法和乘法,可以在三元组表示的基础上进行。 在数组的顺序表示和实现中,需要注意的是,尽管数组在逻辑上可能表现为多维,但在内存中,它们通常是一维的。因此,需要建立一个多维数组到一维存储空间的映射关系,以便正确地访问和操作数组元素。 本教程涵盖了数组的基本概念,顺序存储方法,以及在处理特定情况(如矩阵)时的优化策略,是学习C语言数据结构的重要资料。通过深入理解这些知识点,可以帮助开发者更有效地利用数组这一基本数据结构进行程序设计。