第1章 概论


目录


一、数据结构的基本概念与术语

1.1 数据结构的基本概念

  1. 数据结构:按一定的逻辑结构组成的一批数据,使用某种存储结构将这批数据存储于计算机中,并在这些数据上定义了一个运算集合

1.2 数据的逻辑结构

  1. 逻辑结构的种类:

    1. 集合
    2. 线性结构
    3. 树形结构
    4. 图状结构
  2. 数据的逻辑结构:数据和数据之间存在的逻辑关系

  3. 开始结点:结点没有前驱结点

  4. 终端结点:结点没有后继结点

  5. 内部结点:既不是开始结点也不是终端结点

  6. 注:有时候,逻辑结构简称为数据结构

1.3 数据的存储结构

  1. 存储结构的种类:

    1. 顺序存储
    2. 链式存储
    3. 索引存储
    4. 散列存储
  2. 数据的存储结构:数据在计算机中的存储方式

  3. 顺序存储:逻辑上相邻的结点物理位置也相邻

  4. 链式存储:逻辑上相邻的结点物理位置不一定相邻(可相邻可不相邻)

  5. 索引存储:根据结点的索引号确定该结点的存储地址

  6. 散列存储:结点在计算机中的存储地址由h(函数)决定

    1. 存储密度 = 数据本身所占存储空间的大小 / 整个数据结构所占存储空间的大小
    2. 注:顺序存储密度 = 1;链式存储密度 < 1

1.4 数据的运算集合

  1. 数据的运算:定义在数据的逻辑结构上具体实现依赖于数据的存储结构
  2. 数据的运算集合
    1. 插入
    2. 删除
    3. 检索
    4. 输出
    5. 排序
二、数据类型和抽象数据类型(大纲未规定)

2.1 数据类型

  1. 数据类型:反映了数据的取值范围以及对这类数据可以施加的运算
  2. 数据类型的两个方面:数据属性 + 在数据上可以施加的运算集合
  3. 注:数据结构是数据存在的形式

2.2 抽象数据类型

  1. 抽象数据类型:数据类型的进一步抽象,基本数据类型的延伸和发展

2.3 抽象数据类型的描述和实现

  1. 抽象数据类型的描述:抽象数据类型的名称 + 数据的集合 + 数据之间的关系和操作的集合
  2. 抽象数据类型的实现:依赖于程序设计语言实现
三、算法和算法分析

3.1 算法的基本概念和基本特征

  1. 算法:求解问题的方法和步骤(一系列有限的运算规则 or 若干条指令组成的有穷序列
  2. 算法的特征:
    1. 有穷性:算法执行必须在有限步结束
    2. 确定性:算法的每一个步骤都必须是确定的、独一无二的
    3. 输入:算法有0个或多个输入
    4. 输出:算法一定有输出结果
    5. 可行性:算法中的运算必须是可以实现的
  3. 程序:用计算机语言表达的求解一个问题的一系列指令的序列
  4. 算法和程序的区别:算法具有有穷性;程序不需要具有有穷性

3.2 算法的时间复杂度和空间复杂度

  1. 算法的时间复杂度:算法执行过程中他的基本操作的执行次数
  2. 注:评价算法的时间复杂度时,不考虑两算法执行次数之间的细小区别,而只关心算法的本质区别
  3. 常见算法的复杂度:1、\(log_2n\)、n、\(nlog_2n\)、\(n^2\)、\(n^3\)、\(2^n\)
  4. 算法的最好情况:算法计量值的最小值
  5. 算法的最坏情况:算法计量值的最大值
  6. 算法的平均情况:算法在所有可能情况下的计算量的加权平均值
  7. 算法的空间复杂度:除了存储数据本身以外的附加存储空间