数据结构与算法

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

目录

  • 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.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.5 括号匹配动画
      • 11.5.1 示例程序1:利用Inputbox输入括号串
      • 11.5.2 示例程序2:窗体中输出括号串
      • 11.5.3 示例程序3:栈中字符的输出
      • 11.5.4 示例程序4:字符进栈动画
      • 11.5.5 示例程序5:字符出栈动画
    • 11.6 迷宫搜索动画
      • 11.6.1 示例程序1:对话框输入迷宫行列规模
      • 11.6.2 示例程序2:绘制迷宫矩阵
      • 11.6.3 示例程序3:鼠标点选迷宫障碍点
      • 11.6.4 示例程序4:鼠标点选迷宫入口与出口
      • 11.6.5 示例程序5:深度优先遍历迷宫
    • 11.7 二叉树遍历动画
      • 11.7.1 示例程序1:绘制满二叉树
      • 11.7.2 示例程序2:显示鼠标点击位置
      • 11.7.3 示例程序3:二叉链表存储的二叉树创建
      • 11.7.4 示例程序4:绘制二叉链表结构的二叉树
    • 11.8 图的遍历与求最小生成树动画
      • 11.8.1 示例程序1:根据邻接矩阵存储结构绘制图
      • 11.8.2 示例程序2:鼠标点击窗体创建图的节点
      • 11.8.3 示例程序3:利用鼠标选择绘图窗体中的顶点
      • 11.8.4 示例程序4:求顶点V的未被访问的邻接点
    • 11.9 二叉排序树的插入动画
      • 11.9.1 示例程序1:绘制满二叉树
      • 11.9.2 示例程序2:实现模拟按钮菜单
      • 11.9.3 示例程序3:二叉排序树插入一个节点
      • 11.9.4 示例程序4:二叉排序树的创建
  • 12 综合练习题讲解
    • 12.1 重点应用题讲解
    • 12.2 提问小题讲解
括号匹配动画


一、 实验目的

  1. 掌握栈的逻辑结构;

  2. 掌握STL框架的栈的应用;

  3. 掌握利用C/C++编程语言实现数据结构的编程方法;

  4. 通过上机实践加强利用数据结构解决实际应用问题的能力;

二、 实验相关知识

  1. 括号匹配算法

  2. 栈的STL框架的应用;

  3. 使用EasyX做简单的图形处理

三、 实验内容与要求

利用EasyX实现括号匹配演示,具体要求如下:

  1. 利用Inputbox输入合法的括号串,要求传中仅包含英文的括号字符,串长度不超过20个字符;

  2. 演示出串匹配过程中,字符进栈与出栈的过程,且给出适当的提示;

  3. 最终显示串匹配的结果,

  4. 完成作品后,提交相应的作业。

  5. 参考效果如下:

四、实验原理讲解

五、进阶思考

1、增加字符串中字符位置的标注;

2、增加栈的位置标注;

3、增加对动员演示速度的控制;

4、增加动画的暂停功能(可以参考多线程编程);