1、 计 算 机 工 程 学 院 课程设计报告 课程名称:课程名称:数据结构课程设计 设计题目设计题目: 括号匹配问题 院院 系系: 计算机工程学院 专专 业:业: 组组 别:别: 学生姓名学生姓名: : 学学 号号: 起止日期起止日期: 年月日 年月日 指导教师指导教师: 1 目录目录 1.需求分析 . 2 1.1 课程设计题目 . 2 1.2 课程设计任务及要求 . 2 1.3 课程设计思想. 2 1.4 软硬件运行环境及开发工具 . 2 1.概要设计 . 2 2.1 课题设计的流程图 . 2 2.2 主要的数据结构 . 3 3.详细设计 . 4 3.1 课题设计的方法及原理 . 4 3.2
2、主要代码实现 . 4 4.调试与操作说明 . 5 5.总结与体会 . 6 6.致谢 . 7 7参考文献 7 2 1.1.需求分析需求分析 1.1 课程设计题目课程设计题目 括号匹配问题 1.2 课程设计任务及要求课程设计任务及要求 假设一个算术表达式中可包含三种括号:圆括号,方括号和花 括号且这三种括号可按任意次序嵌套使用。试利用栈的运算,编写 判别给定表达式中所含括号是否正确配对出现的算法。 1.3 课程设计思想课程设计思想 利用栈来判断括号是否匹配时,遇到左括号就进栈,遇到右括 号则左括号出栈, 代表这对括号匹配, 如果右括号进栈时, 栈为空, 则说明缺少左括号,若表达式扫描完栈为空,则说
3、明表达式的括号 匹配,否则说明表达式缺少左括号。 1.4 软硬件运行环境及开发工具软硬件运行环境及开发工具 Microsoft visual C+ 6.0 1.1.概要设计概要设计 2.1 课题设计的流程图课题设计的流程图 3 2.22.2 主要的数据结构主要的数据结构 栈类包括如下数据成员和成员函数 top; / 指 向 栈 顶 的 指 针 LinkStack(); /构造函数 bool isEmpty(); /判断栈是否为空 void Push(T x); /x 进栈,top 指向 x T Pop(); /栈顶元素出栈 T GetPop(); / /读取栈顶元素 bool Search(T
4、 x); / 搜素栈中是 否有 x 这个元素 void OutPut(); /输出栈内所有元素 扫描字 符串 栈空 栈 空 缺少左括号 栈顶元素出栈 进栈 为左括号 为右括号 扫描 完毕 否 是 括号匹配 是 否 缺少右括号 创建栈 4 3.3.详细设计详细设计 3.1 课题设计的方法及原理课题设计的方法及原理 1)定义三个栈 s1,s2,s3 分别用来判断圆括号,方括号和花括 号是否匹配 2)对 s1,s2,s3 均有如下操作: a.利用动态指针 p 依次对输入的(字符串)表达式进行扫 描 I.若为左括号,则进栈 II 若为右括号,则先取栈顶元素。若栈顶元素为空,则 缺少左括号;若不为空,则栈顶元素出栈 b.当字符串扫描完,检验栈是否为空。若为空,则括号正确 匹配