目录

  • 1 绪论
    • 1.1 数据结构的定义和基本术语
    • 1.2 数据的逻辑结构和存储结构
    • 1.3 算法和算法分析
  • 2 线性表
    • 2.1 线性表的定义及逻辑结构
    • 2.2 顺序存储结构
    • 2.3 链式存储结构
    • 2.4 应用:一元多项式的表示和相加
  • 3 栈和队列
    • 3.1 栈
    • 3.2 队列
  • 4 串
    • 4.1 资源
  • 5 数组
    • 5.1 数组
    • 5.2 广义表
  • 6 树和二叉树
    • 6.1 树的定义和基本术语
    • 6.2 二叉树
    • 6.3 遍历二叉树和线索二叉树
    • 6.4 树和森林
    • 6.5 哈夫曼树及其应用
  • 7 图
    • 7.1 图的定义和基本术语
    • 7.2 图的存储结构
    • 7.3 图的遍历
    • 7.4 图的应用
  • 8 查找
    • 8.1 查找的基本概念
    • 8.2 基于线性表的查找
    • 8.3 基于树的查找
    • 8.4 哈希表
  • 9 内部排序
    • 9.1 排序的定义和种类
    • 9.2 插入排序
    • 9.3 B-树和B+树
    • 9.4 交换排序
    • 9.5 选择排序
    • 9.6 归并排序和基数排序
  • 10 实验
    • 10.1 目的要求
      • 10.1.1 参考代码
图的遍历

和树的遍历类似,图的遍历(traversing Graph)是指从图中某个顶点出发,按序访问图中所有顶点,且使图中的每个顶点仅被访问一次的过程。按图中结点的访问路径不同,图的遍历分为两种:深度优先搜索和广度优先搜索。

深度优先搜索(Depth-First Search)遍历类似于树的先根遍历,是树的先根遍历的推广。

图的深度优先搜索遍历过程为:从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未曾被访问过的结点作为起始点,重复上述过程,直至图中所有顶点都被访问到为止。

类似于老师家访每一个学生,出发访问学生A之后,再访问A介绍的另一个没有访问过的学生B,再访问B介绍的另一个没有访问过的学生C,如果B学生能介绍的学生全都访问过了,再回到学生A家,让学生A再介绍新的没有访问过的学生,当访问过的学生都不能提供新的没访问过的学生,而且还要应该要访问的学生,说明剩下的没访问的学生不在访问过的学生的联络范围之内,则应另找一个出发访问点,即另外一个连通分量。

广度优先搜索(Breadth-First Search)遍历类似于树的层次遍历。

图的广度优先搜索遍历过程为:从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问过的邻接点,之后按这些顶点被访问的先后次序依次访问它们的邻接点,直至图中所有和V0有路径相通的顶点都被访问到。若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。换句话说,广度优先搜索遍历图的过程中以v0为起始点,由近至远,依次访问和v0有路径相通且路径长度为1,2,…的顶点。

类似于老师家访每一个学生,出发访问学生A之后,按一定顺序记录下学生A所能介绍的全部学生家地址,假设是BCDE,再访问A介绍的第一个没有访问过的学生B,照样在记录本的BCDEE的后面记录下学生B所能介绍的没有访问过的全部学生家地址,假设是FGH,再访问应该是按照记录本上的顺序A介绍的第二个没有访问过的学生C,照样在记录本的BCDEFGHH的后面记录下学生C所能介绍的没有访问过的全部学生家地址,以此类推,直到记录本上学生的学生全都访问过了,还有没访问过的学生,说明剩下的没访问的学生不在访问过的学生的联络范围之内,则应另找一个出发访问点,即另外一个连通分量。