数据结构课程设计-算术表达式的求解

数据结构课程设计-算术表达式的求解

ID:8325136

大小:120.50 KB

页数:18页

时间:2018-03-19

数据结构课程设计-算术表达式的求解_第1页
数据结构课程设计-算术表达式的求解_第2页
数据结构课程设计-算术表达式的求解_第3页
数据结构课程设计-算术表达式的求解_第4页
数据结构课程设计-算术表达式的求解_第5页
资源描述:

《数据结构课程设计-算术表达式的求解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、滨江学院数据结构课程设计题目算术表达式的求解院系计算机系专业学生姓名学号指导教师李燕二O一六年六月十日目录1.前言11.1课题内容及要求11.2选题目的及意义12.系统分析22.1问题描述22.2运算符的优先级分析:22.3错误提示分析:23.系统概要设计33.1系统总体架构设计33.2系统模块的设计34.系统详细设计44.1数据的存储设计与描述:44.2详细的优先级关系:44.3具体的操作集合:45.程序实现66.程序测试136.1正确的结果136.2错误1136.3错误2136.4错误3137.收获及体会:15II参考文献:15II1.前言1.1课题内容及要求题目39:算

2、术表达式的求解问题描述:给定一个算术表达式,通过程序求出最后的结果。基本要求:从键盘输入要求解的算术表达式;采用栈结构进行算术表达式的求解过程;能够判断算术表达式正确与否;对于错误表达式给出提示;对于正确的表达式给出最后的结果;1.2选题目的及意义⑴进一步熟悉和使用栈的基本操作,如栈的初始化,进栈,出栈的特性。⑵学习在实际生活中使用栈来解决问题。152.系统分析2.1问题描述要正确计算表达式的值,必须要正确的解释表达式。首先解释算术表达式的运算规则,分为以下三点:⑴先乘除后加减;⑵从左往右进行计算;⑶有括号的,先算括号内的;2.2运算符的优先级分析:任何一个表达式都是由运算符

3、,操作数和界限符组成的。这里把运算符,界限符统称为算符。设两个操作符分别为op1和op2。为实现运算符的优先法则,优先关系会出现三种情况,op1的优先级高于op2的优先级,op1的优先级等于op2的优先级,op1的优先级小于op2的优先级。2.3错误提示分析:对于输入错误的,比如出现了表达式以外的非法字符,没有按照正确格式进行输入。系统会给出提示。153.系统概要设计3.1系统总体架构设计算术表达式的求解栈模块运算模块定义栈的结构初始化栈入栈出栈取栈顶的元素判断优先级判断是否为运算符进行基本运算函数运算函数3.2系统模块的设计为了更好的服务,结合用户的需求,有如下的模块设计:

4、程序主要包括三个模块:⑴主函数设计模块intmain(){函数体}⑵栈模块:一些本程序需要的操作,如初始化栈,定义栈,出栈,入栈,取栈顶元素。⑶运算模块:对一些优先级的定义,以及基本的算术运算。154.系统详细设计4.1数据的存储设计与描述:为实现运算符的优先算法,可以用两个栈:运算符栈OPTR,操作数栈OPND。四则运算表达式算法的基本思想是:⑴首先置操作数栈OPND为空栈,表达式起始符“#”为OPTR栈的栈底元素。⑵依次读入表达式中的每个字符,是操作数则进栈OPND,是运算符就和OPTR栈的栈顶元素比较后,依据相应的优先权进行操作,直至整个表达式求值完毕(标志是两个运算符

5、都为“#”)。4.2详细的优先级关系:Op2Op1+-*/()#+>><<<>>->><<<>>*>>>><>>/>>>><>>(<<<<<=)>>>>>>#<<<<<=4.3具体的操作集合:栈的设计:typedefstruct{ElemTypedata[StackSize];inttop;}SeqStack;voidInit(SeqStack*s);//初始化栈intIsFull(SeqStack*s);//判断栈是否已满intIsEmpty(SeqStack*s);//判断栈是否是空voidPush(SeqStack*s,ElemTypex);//进行入栈操栈15Elem

6、TypePop(SeqStack*s);//进行出栈操作ElemTypegetTop(SeqStack*s);//提取栈顶元素函数运算:intAdvan(intt1,intt2);//判断符号的优先级intIn(intc);//判断c是否为运算符intOprea(inta,inttheta,intb);//进行四则运算intEvaluteExpression();//进行算术表达式求值155.程序实现//stack.h中#ifndef_STACK_H#define_STACK_H#defineStackSize100#defineMaxLength100typedefintE

7、lemType;typedefstruct{ElemTypedata[StackSize];inttop;}SeqStack;voidInit(SeqStack*s);//初始化栈intIsFull(SeqStack*s);//判断栈是否已满intIsEmpty(SeqStack*s);//判断栈是否是空voidPush(SeqStack*s,ElemTypex);//进行入栈操栈ElemTypePop(SeqStack*s);//进行出栈操作ElemTypegetTop(SeqStack*s);//提

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。