数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作方法,为提高利用计算机解决问题的效率服务。
数据结构是指数据元素的集合及元素间的相互关系和构造方法。元素之间的相互关系是数据的
逻辑结构,数据元素及元素之间关系的存储称为
存储结构(或物理结构)。数据结构按照逻辑关系的不同分为
线性结构和
非线性结构两大类,其中,非线性结构又可分为树结构和图结构。
线性结构是一种基本的数据结构,主要用于对客观世界中具有单一前驱和后继的数据关系进行描述。线性结构的特点是数据元素之间呈现一种线性关系,即元素“一个接一个排列”。
数组与广义表可看作是线性表的推广,其特点是数据元素仍然是一个表。这里讨论多维数组的逻辑结构和存储结构,特殊矩阵和矩阵的压缩存储,广义表的逻辑结构、存储结构和基本运算。
1、数组
1.1、数组的定义及基本运算
(1)数组的定义
数组是定长线性表在维数上的扩展,即线性表中的元素又是一个线性表。n 维数组是一种“同构”的数据结构,其每个数据元素类型相同、结构一致。
设有 n 维数组 A[b1,b2,…,bn],其每一维的下界都为 1,bi是第 i 维的上界。从数据结构的逻辑关系角度来看,A 中的每个元素 A[j1,j2,…,jn] (1≤ji≤bi) 都被 n 个关系所约束。在每个关系中,除第一个和最后一个元素外,其余元素都只有一个直接后继和一个直接前驱。因此就单个关系而言,它仍是线性的。
以二维数组 4[m,n]为例,可以把它看成是一个定长的线性表,它的每个元素也是一个定长线性表。
A 可看成一个行向量形式的线性表:
A
m