- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计
PAGE9 / NUMPAGES19
PAGE \* MERGEFORMAT 1
南通大学计算机学院
《数据结构课程设计报告书》
题目: 表达式求值问题
专业: 计算机科学与技术
班级:
学号:
姓名:
指导教师:
开始日期: 2013.1.14
完成日期: 2013.1.16
1.问题的描述和分析
1.1问题描述
表达式有中缀、后缀、前缀三种表示方式,中缀式的计算按运算符的优先级及括号优先原则,相同级别从左到右进行运算。而前缀式和后缀式没有括号给运算带来方便。本设计的主要任务是进行表达式的转换及不同表达式的计算。
1.2 问题分析
表达式是字符型数据,在程序中涉及表达上的转换,可用数组和栈来存储表达式。程序中关键要处理好在不同形式表达中字符的顺序,对操作符优先级的比较以及在中转前、中转后过程中对括号的处理。
2.概要设计
2.1系统模块划分
要求:描述整个系统的模块划分,最后以图的形式展现,并简单介绍每个模块的功能。例如:
进入主菜单
进入主菜单
中缀表达式求值
输出各种形式的表达式
退出程序
前缀表达式求值
后缀表达式求值
中缀式转后缀式
中缀式转前缀式
图2-1 系统模块图
2.2 ADT(抽象数据类型)描述
本程序要用到栈,对栈的操作包含在头文件“SqStack.h”中。
ADT Stack {
数据对象:D={ai|ai∈ElementSet,i=1,2…,n,n≥0}
数据关系:R={ai-1,ai|ai-1,ai∈D,i=2,…n}
基本操作:
SqStack
创建一个空栈
Push
将一个元素压入栈中
Pop
将栈顶元素出栈
StackEmpty
判断栈是否为空要求}
3.详细设计
3.1 ADT基本操作算法设计
3.1.1 A
中缀表达式求值
SqStackchar OP(20);//操作符栈
SqStackdoubleOD(20);//操作数栈
读入表达式操作数或操作符C,如果C是操作数,OP.Push(C),如果C是操作符,把它与栈顶元素的优先级比较case:OP.Push(c);case=:x=OP.Pop();如果是大于,从操作符栈里退出两个元素进行运算。
重复上述过程直到把表达式扫描完,操作数栈的栈顶元素为计算结果
3.1.2
中缀转后缀
SqStackchar OP(20)
从左向右读取表达式,读到操作数把它输出,读到操作符,把它与栈顶元素的优先级比较case:OP.Push(c); case=:x=OP.Pop();case:postexp[i++]=OP.Pop();
3.1.3 ADT操作3
中缀转前缀
SqStackcharST(20);
SqStackcharSP(20);
SqStackcharOP(20);
将中缀式入栈再依次从栈中读取元素,如果是操作数把它加入一个数组中if(C==)’)OP.Push(C);如果是运算符,则:如果栈空或栈顶是闭括号或此元素的优先级大于等于栈顶元素此操作符入栈,否则,栈顶运算符出栈并加入数组中;如果是开括号,栈中元素逐个出栈加入数组中,直到遇到闭括号。最后数组中的元素序列为中缀式的逆序,将数组中的元素入栈再出栈就得到中缀式。
3.1.4 ADT操作 4
后缀求值
SqStackdouble OD(20);//操作数栈
c=*postexp++;
while(c!=\0)
{
if((c=0c=9)||c==.)//为操作数
{
i=0;
do
{
z[i++]=c;
c=*postexp++;
}while(c=0c=9||c==.);
z[i]=\0;
d=atof(z); // 将字符串数组转为符点型存于d
OD.Push(d);
}
if(In(c))//遇到运算符从栈中退出两个元素进行运算
{
b=OD.Pop ();
a=OD.Pop ();
OD.Push (Operate(a,c,b));
c=*postexp++;
}
c=*postexp++;
}
v=OD.Pop ()//计算结果
3.1.5 ADT操作 5
前缀式求值
SqStackcharST(20);
SqStackdoubleOD(20);
while(*preexp!=\0)
{
ST.Push(*preexp+
您可能关注的文档
- 怎样做好平面设计.ppt
- 公司采购软件计划方案.doc
- 数据中心基础设施.pptx
- C++版数据结构航空订票系统源代码.docx
- 城镇地籍调查数据库建设工作方案.doc
- 2014版软件工程实验指导书机票预订.doc
- 基于TCP协议的简单即时通信软件的设计与实现.doc
- 可见光通信数字通信文献综述.doc
- 2019公司绩效考核表格大全适合大小公司.doc
- 基于VHDL语言的数据采集系统设计.doc
- 于思辨中传承中华文明之光.docx
- 两“守”两“创”:论初中历史党史教育的“正”与“新”.docx
- 读出思政育人的“新声”.docx
- 专题07 写作 高二语文上学期期末考点(统编版选择性必修上册 中册).pptx
- 11.《反对党八股(节选)》课件 统编版高中语文必修上册.pptx
- 第一课 在生活中学民法用民法 课件 高考政治一轮复习选择性必修二《法律与生活》课件.pptx
- 8.3 实数及其简单运算(第2课时 实数的性质及运算)七年级数学下册(人教版2024).pptx
- 专题十 中国共产党的先进性(课件)高考政治一轮复习(新高考通用).pptx
- 关注宁德时代换电2.0.pdf
- 华创证券-江淮汽车·深度华为合作助力腾飞,尊界表现超预期.pdf
最近下载
- 国开02047_政府经济学-机考复习资料.docx VIP
- 特殊教育:培智部五年级生活数学B卷.docx
- OBE理念指导下的软件实训课教学改革实践探索.docx VIP
- 安检现场处置单位广州民航王超58课件.pptx VIP
- (2025春新版本)七年级下册道德与法治知识点总结.pdf VIP
- 微软-2025-该年前沿企业诞生(英译中).pdf
- 2024年华为认证HCIE存储H13-629必备考试题库大全(含答案).docx VIP
- 房地产管理新加坡房地产经济.docx VIP
- T_CERDS 3-2022 企业ESG评价体系.docx VIP
- 2024年公安机关人员基础知识考试题库及答案 (新版).docx
文档评论(0)