内蒙古科技大学。
本科生课程设计**。
题目:数据结构课程设计。
算术表达式求值。
学生姓名:董雪。
学号:1176807442
专业:计算机科学与技术。
班级:11级四班。
指导教师:王丽颖。
2024年 5月 29日。
目录。第一章需求分析 - 1 -
1.1 引言 - 1 -
1.2 任务概述 - 1 -
1.3 数据描述 - 1 -
1.4 功能需求 - 2 -
1.5 运行需求 - 2 -
1.6 任务计划 - 2 -
第二章概要设计 - 3 -
2.1 总体设计 - 3 -
2.2 抽象数据类型定义 - 3 -
2.3 接口设计 - 4 -
2.4 运行界面设计 - 5 -
第三章详细设计 - 7 -
3.1 主函数 - 7 -
3.2 计算left or right的值 - 8 -
3.3 计算的实现过程 - 9 -
3.4 运算符的比较 - 10 -
3.5 主界面的实现 - 12 -
第四章测试分析 - 14 -
4.1 测试程序执**况 - 14 -
第五章课程设计总结 - 16 -
参考文献 - 16 -
附录:程序** - 17 -
致谢23 -
内蒙古科技大学课程设计任务书。
在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。
算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-用#表示结束。
算法输出:表达式运算结果。
算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。
要求:输入一个算术表达式,其中包含有数字,加、减、乘、除号、括号,能根据四则运算法则计算出正确结果。例如:
3+5*6 a. 从左算到右 b. 先乘除,后加减 c.
先括号内,后括号外。
class infix2postfix 类中定义了stack st k存储运算符的堆栈。
infix2postfix() infix2postfix(const string &infixexp) postfixexp()
set_priority() setlnficexp(const shring &infixexp)
class setpostfixeval 类中定义了 stackstk 存放操作数的对栈。
int evaluate()
int computer()
算术表达式求值。
以字符串表示算术表达式,在此基础上借助栈完成对表达式的转换和求值操作。
要求设计类(或类模板)来描述算术表达式及其操作,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:
输入算术表达式(中缀表示)
中缀表达式转换为后缀表达式。
输出表达式。
对后缀表达式求值。
可以再ms-dos下运行的,c++编写的程序。
程序是进行算术表达式的求值,可以根据运算符的优先级来计算表达式的值。输入为实型数字与这些字符。输出为计算结果(实型),输入范围为double范围。
程序可以根据预先定义好的运算符的优先级来计算算术表达式的值。
测试数据(2+1)*5=15
为实现算符优先算法,可以使用两个工作栈。一个称做optr,用以寄存运算符;另一个称做opnd,用以寄存操作数或运算结果。算法的基本思想是:
1)首先置操作数栈为空栈,表达式起始符“#”为运算符栈底元素。
2)依次读入表达式中每个字符,若是操作数则进opnd栈,若是运算符则和optr栈的栈顶运算符比较优先权后作相应操作,直至整个表达式求值完毕(即optr栈的栈顶元素和当前读入的字符均为“#
adt stack
数据对象:r1=
约定端为栈顶,端为栈底。
基本操作:initstack(&s)
操作结果:构造一个空栈s。
gettop(s)
初始条件:栈s已存在。
操作结果:用p返回s的栈顶元素。
push(&s,ch)
初始条件:栈s已存在。
操作结果:插入元素ch为新的栈顶元素。
pop(&s)
初始条件:栈s已存在。
操作结果:删除s的栈顶元素。
in(ch)
操作结果:判断字符是否是运算符,运算符即返回1。
precede(c1, c2)
初始条件:c1,c2为运算符。
操作结果:判断运算符优先权,返回优先权高的。
operate(a,op,b)
初始条件:a,b为整数,op为运算符。
操作结果:a与b进行运算,op为运算符,返回其值。
num(n)
操作结果:返回操作数的长度。
evalexpr()
初始条件:输入表达式合法。
操作结果:返回表达式的最终结果。
adt stack
表2.1:函数列表。
图2.1函数模块调用关系流程图。
表2.2运算符间的优先关系。
class infix2postfix
public:
infix2postfix(){
infix2postfix(const string& infixexp):infix(infixexp){}
void setinfixexp(const string& infixexp)
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...