1. 前言
本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。
2. 概念
数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据的基本单位是数据元素。数据元素可以分为两种,一种叫初等项,另一种叫组合项。初等项指不能再分割的最小单位,组合项指可以分割为更小的项的组合。如学生的性别、籍贯等为初等项,学生的成绩可以分割为更小的化学、物理等。
数据之间的关系称之为结构。如各节点的树状关系和网状关系。
数据结构的定义:数据结构由某一数据元素的集合和该集合中数据元素之间的关系组成。
3. 分类
数据结构分为两大类: 线性结构和非线性结构。
3.1 线性结构
线性结构又称线性表,所有元素都按某种次序排列在一个序列中。
除第一个元素外,其他每个元素都有且只有一个直接前驱。除最后一个元素外,其他每个元素都有且只有一个直接后驱。
线性结构分为:直接存取结构,顺序存取结构和字典结构。
直接存取结构:可以直接存取某一指定项而不须访问其前驱。如数组。
顺序存取结构:只能从序列的第一个数据元素起,按序记录集合或文件中的某一记录。如栈、队列。
字典结构:通过关键码(key)进行索引。
3.2 非线性结构
非线性结构中,每个元素可能与零个或者多个其他数据元素发生联系。非线性结构分为层次结构和群结构。
层次结构是按层次划分的数据元素的集合,指定层次上元素可以又零个或者多个处于下一层次上的直接所属下层元素。如树形结构。
群结构中所有元素无顺序关系。如图结构。