数据结构与算法

梁宝兰、徐翔、周艳明、吴舜歆、李瑞芳、陈晨

目录

  • 1 前言
    • 1.1 课程考核说明
    • 1.2 头歌平台注册指南
  • 2 绪论
    • 2.1 数据结构总览
    • 2.2 什么是数据结构
    • 2.3 数据结构求解问题的过程
    • 2.4 算法及其描述
    • 2.5 算法分析基础
  • 3 线性表
    • 3.1 线性表的基本概念
    • 3.2 线性表的顺序存储结构
    • 3.3 顺序表算法设计
    • 3.4 单链表
    • 3.5 单链表的算法设计
    • 3.6 双向链表
    • 3.7 循环链表
    • 3.8 线性表的应用
  • 4 栈和队列
    • 4.1 栈的定义和顺序栈
    • 4.2 链式栈
    • 4.3 队列的定义和顺序队列
    • 4.4 链式队列
    • 4.5 栈和队列的应用——迷宫求解
  • 5 第4章 串
    • 5.1 串的基本概念和存储概念
    • 5.2 串的匹配
  • 6 第5章 数组和广义表
    • 6.1 数组和特殊矩阵
    • 6.2 稀疏矩阵的存储
  • 7 第6章 树和二叉树
    • 7.1 树的定义和基本术语
    • 7.2 二叉树的基本概念
    • 7.3 二叉树的存储
    • 7.4 二叉树的基本运算
    • 7.5 二叉树的遍历
    • 7.6 二叉树遍历的应用
    • 7.7 二叉链表的构造
    • 7.8 二叉树的线索化
    • 7.9 哈夫曼树
  • 8 图结构
    • 8.1 图的基本概念和术语
    • 8.2 图的存储结构
    • 8.3 图的遍历
    • 8.4 最小生成树
    • 8.5 最短路径
    • 8.6 AOV网与AOE网
  • 9 查找
    • 9.1 查找的基本概念和术语
    • 9.2 基于线性表的查找
    • 9.3 基于树的查找
    • 9.4 哈希表
  • 10 内部排序
    • 10.1 排序的基本概念
    • 10.2 插入类的排序
    • 10.3 交换类的排序算法
    • 10.4 选择类的排序
    • 10.5 归并类的排序
    • 10.6 基数排序
    • 10.7 排序比较
  • 11 基于EasyX的实践项目
    • 11.1 初识EasyX
      • 11.1.1 显示背景图片
      • 11.1.2 显示透明图片
      • 11.1.3 在背景图片上显示一张透明图
      • 11.1.4 摇摆的豌豆
    • 11.2 飞舞的蝴蝶
      • 11.2.1 示例程序1:在窗体中显示一张蝴蝶图片
      • 11.2.2 示例程序2:在窗体先后显示两张蝴蝶图片
      • 11.2.3 示例程序3:蝴蝶在原地不断煽动翅膀
      • 11.2.4 示例程序4:旋转蝴蝶图片显示
      • 11.2.5 示例程序5:图片移动
      • 11.2.6 参考答案:飞舞的蝴蝶
    • 11.3 排序动画
      • 11.3.1 示例程序1:绘制待排序关键字柱状图
      • 11.3.2 示例程序2:柱状条移动动画
      • 11.3.3 示例程序3:待排序元素柱状条移动、交换
      • 11.3.4 示例程序4:简单选择排序算法
      • 11.3.5 参考答案1:堆排序演示
      • 11.3.6 参考答案2:冒泡排序演示
      • 11.3.7 参考答案3:快速排序演示
      • 11.3.8 参考答案4:直接插入排序
    • 11.4 约瑟夫环动画
      • 11.4.1 示例程序1:链表常见操作函数
      • 11.4.2 示例程序2:创建约瑟夫环
      • 11.4.3 示例程序3:绘制约瑟夫环
      • 11.4.4 示例程序4:突出显示一下圆
      • 11.4.5 示例程序5:删除p指针指向的圆
      • 11.4.6 参考答案
    • 11.5 括号匹配动画
      • 11.5.1 示例程序1:利用Inputbox输入括号串
      • 11.5.2 示例程序2:窗体中输出括号串
      • 11.5.3 示例程序3:栈中字符的输出
      • 11.5.4 示例程序4:字符进栈动画
      • 11.5.5 示例程序5:字符出栈动画
      • 11.5.6 参考答案
    • 11.6 迷宫搜索动画
      • 11.6.1 示例程序1:对话框输入迷宫行列规模
      • 11.6.2 示例程序2:绘制迷宫矩阵
      • 11.6.3 示例程序3:鼠标点选迷宫障碍点
      • 11.6.4 示例程序4:鼠标点选迷宫入口与出口
      • 11.6.5 示例程序5:深度优先遍历(非递归)迷宫
      • 11.6.6 示例程序6:深度优先搜索(递归)迷宫
      • 11.6.7 示例程序7:广度优先遍历迷宫
    • 11.7 二叉树遍历动画
      • 11.7.1 示例程序1:绘制满二叉树
      • 11.7.2 示例程序2:显示鼠标点击位置
      • 11.7.3 示例程序3:鼠标选择或取消选择满二叉树的节点
      • 11.7.4 示例程序4:二叉链表存储的二叉树创建
      • 11.7.5 示例程序5:绘制二叉链表结构的二叉树
      • 11.7.6 顺序结构存储二叉树的中序遍历递归算法函数调用过程
      • 11.7.7 参考答案——顺序存储结构二叉树的遍历
      • 11.7.8 参考答案——二叉链表存储结构的二叉树的遍历
    • 11.8 图的遍历与求最小生成树动画
      • 11.8.1 示例程序1:根据邻接矩阵存储结构绘制图
      • 11.8.2 示例程序2:鼠标点击窗体创建图的节点
      • 11.8.3 示例程序3:利用鼠标选择绘图窗体中的顶点
      • 11.8.4 示例程序4:求顶点V的未被访问的邻接点
      • 11.8.5 参考答案
    • 11.9 二叉排序树的插入动画
      • 11.9.1 示例程序1:绘制满二叉树
      • 11.9.2 示例程序2:实现模拟按钮菜单
      • 11.9.3 示例程序3:二叉排序树插入一个节点
      • 11.9.4 示例程序4:二叉排序树的创建
      • 11.9.5 参考答案1
      • 11.9.6 参考答案2
  • 12 综合练习题讲解
    • 12.1 重点应用题讲解
    • 12.2 提问小题讲解
二叉树的遍历