数据结构(C语言版)(第2版)
开设本课程的背景 《数据结构》是计算机相关专业的一门重要的专业基础课。它主要研究计算机加工对象的逻辑结构、在计算机中的表示形式以及实现各种基本操作的算法。它是学习操作系统、编译原理、数据库原理等计算机专业核心课程的基础,掌握好这门课程的内容,是学习计算机其他相关课程的必备条件。 本课程讲述的主要内容 本课程将分别讲述数据结构的基本概念、线性表、栈和队列、串和数组、树形结构、图结构、查找、排序等内容。 学习本课程的基本方法 上课认真听讲; 仔细阅读教材中的大量例题,从而体会并最终掌握数据结构中的基本概念; 认真上机实习,独立完成每个章节后面的练习题。 第1章 绪论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准 1.1 从问题到程序 1.2 有关概念和术语 1.3 算法及算法分析 1.4 关于数据结构的学习 计算机解决问题的一般过程 当今计算机应用的特点: l所处理的数据量大且具有一定的关系; l对其操作不再是单纯的数值计算,而更多地是需要对其进行组织、管理和检索。 应用举例1——学籍档案管理 假设一个学籍档案管理系统应包含如下表1-1所示的学生信息。 特点: l每个学生的信息占据一行,所有学生的信息按学号顺序依次排列构成一张表格; l表中每个学生的信息依据学号的大小存在着一种前后关系,这就是我们所说的线性结构; l对它的操作通常是插入某个学生的信息,删除某个学生的信息,更新某个学生的信息,按条件检索某个学生的信息等等。 应用举例2——输出n个对象的全排列 输出n个对象的全排列可以使用下图1-1所示的形式描述。 特点: l在求解过程中,所处理的数据之间具有层次关系,这是我们所说的树形结构; l对它的操作有:建立树形结构,输出最低层结点内容等等。 应用举例3——制定教学计划 在制定教学计划时,需要考虑各门课程的开设顺序。有些课程需要先导课程,有些课程则不需要,而有些课程又是其他课程的先导课程。比如,计算机专业课程的开设情况如下表1-2所示: 课程先后关系的图形描形式: 特点 l课程之间的先后关系用图结构描述; l通过实施创建图结构,按要求将图结构中的顶点进行线性排序。 结论 计算机的操作对象的关系更加复杂,操作形式不再是单纯的数值计算,而更多地是对这些具有一定关系的数据进行组织管理,我们将此称为非数值性处理。要使计算机能够更有效地进行这些非数值性处理,就必须弄清楚这些操作对象的特点,在计算机中的表示方式以及各个操作的具体实现手段。这些就是《数据结构》这门课程研究的主要内容。 数据 是对客观事物的符号表示。在计算机科学中其含义是指所有能够输入到计算机中并被计算机程序处理的符号集合。 数据元素 是数据集合中的一个实体,是计算机程序中加工处理的基本单位。 数据元素按其组成可分为简单型数据元素和复杂型数据元素。简单型数据元素由一个数据项组成,所谓数据项就是数据中不可再分割的最小单位;复杂型数据元素由多个数据项组成,它通常携带着一个概念的多方面信息。 数据结构 简单地说,就是相互之间存在一种或多种特定关系的数据元素的集合。常见的数据结构有:线性结构、树形结构和图形结构。 逻辑结构 数据结构中所说的“关系”实际上是指数据元素之间的逻辑关系,又称此为逻辑结构。 存储结构(物理结构) 是指数据结构在计算机存储器中的具体实现。与孤立的数据元素表示形式不同,数据结构中的数据元素不但要表示其本身的实际内容,还要表示清楚数据元素之间的逻辑结构。 常见的存储结构 顺序存储结构:特点是借助于数据元素的相对存储位置来表示数据元素之间的逻辑结构;