数据结构课程设计

发布 2022-10-01 21:25:28 阅读 7029

内蒙古科技大学。

本科生课程设计**。

题目:数据结构课程设计。

算术表达式求值。

学生姓名:董雪。

学号: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 初始化时每个方格都是关闭的,一个...