数据结构课设报告-算术表达式求值
更新时间:2023-09-25 07:21:01 阅读量: 综合文库 文档下载
- 数据结构课设报告推荐度:
- 相关推荐
课程设计 课程名称:题目名称:
学生姓名:
课程成绩:报告
数据结构
算术表达式求值
学号
:
二零一六 年六 月
1.需求分析
本演示程序用C++6.0编写,完成栈的生成。
(1)输入的形式和输入值的范围:输入合法表达式,以“#”结尾;输入的操作数是正整数,运算符只含加减乘除四种运算符。
(2)输出的形式:显示输入是否正确、输入序列和栈的变化过程、计算结果。
(3)程序所能达到的功能:完成算术表达式的计算。 (4)测试数据:
①输入3*(2+4)#; ②输入5*-2#。
2.概要设计
(1)为了实现上述程序功能,需要定义栈的抽象数据类型:
ADT SqStack{
数据对象:D={ai| ai ∈ElemSet,i=1,2,3??,n,n≥0} 数据关系:R1={| ai-1,ai ∈D,i=1,2,3,??,n} 基本操作:
InitStack(SqStack &S)
操作结果:声明栈建立函数 Push(SqStack &S,char e)
初始条件:栈已经存在 操作结果:声明入栈函数 Pop(SqStack &S)
初始条件:栈已经存在 操作结果:声明出栈函数 DispStack(SqStack &S)
初始条件:栈已经存在
操作结果:从栈底到栈顶依次输出各元素
(2)本程序包括5个函数:
①主函数main()
②确定如何入栈函数evaluate() ③声明取栈顶元素函数GetTop() ④声明比较函数Compare() ⑤声明运算函数Operate()
各函数间关系如下:
InitStack
main
push
evaluate
DispStack Compare Pop GetTop
Operate
3.详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。
(1)栈和指针类型
typedef struct //运算符栈 {
SElemType *base; SElemType *top; int stacksize;
}SqStack1;
typedef struct //运算数栈 {
SElemType2 *base;
SElemType2 *top; int stacksize;
}SqStack2; (2)栈的基本操作
void InitStack1(SqStack1 &S1)//构造一个空栈S1 { }
void InitStack2(SqStack2 &S2)//构造一个空栈S2 { }
void Push1(SqStack1 &S1,char e)//入栈 {
if(S1.top-S1.base>=S1.stacksize)//如果栈满,追加存储空间 {
S1.base=(char
S2.base=new SElemType2[STACK_INIT_SIZE];
if(!S2.base)cout<<\存储分配失败!\存储分配失败 S2.top=S2.base;
S2.stacksize=STACK_INIT_SIZE;
S1.base=new SElemType[STACK_INIT_SIZE];
if(!S1.base)cout<<\存储分配失败!\存储分配失败 S1.top=S1.base;
S1.stacksize=STACK_INIT_SIZE;
*)realloc(S1.base,(S1.stacksize+STACKINCREMENT)*sizeof(char));
if(!S1.base) cout<<\存储分配失败!\else {
S1.top=S1.base+S1.stacksize;
S1.stacksize=S1.stacksize+STACKINCREMENT;
}
}
}
*S1.top=e;S1.top=S1.top+1;//将元素压入栈中,指针上移
void Push2(SqStack2 &S2,float e)//入栈 {
if(S2.top-S2.base>=S2.stacksize)//栈满,追加存储空间 {
S2.base=(float
*)realloc(S2.base,(S2.stacksize+STACKINCREMENT)*sizeof(float));
}
char Pop1(SqStack1 &S1)//出栈 { }
float Pop2(SqStack2 &S2)//出栈 {
float e; char e;
if(S1.top==S1.base)cout<<\运算符栈已空!\\n\e=*(--S1.top); return e; }
*S2.top=e;S2.top=S2.top+1;//将元素e入栈,指针上移
if(!S2.base)cout<<\存储分配失败!\else { }
S2.top=S2.base+S2.stacksize;
S2.stacksize=S2.stacksize+STACKINCREMENT;
正在阅读:
数据结构课设报告-算术表达式求值09-25
Android官方开发教程中文版401-13
太原公交IC卡自行车卡充值点05-18
员工行为规范07-10
八年级(上)科学期中期末复习测试卷(四)(第一章综合B卷)01-23
狮子和老鼠作文500字06-26
2019届二轮复习语法专题16种时态经典总结(12页word版)10-21
煮米饭作文600字06-27
钉钉管理员认证考试 部分试题(含答案)04-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 算术
- 表达式
- 报告
- 《珍珠鸟》教学设计(襄州区古驿镇黄渠河一小何朝霞)
- 案例:注重在探究活动中培养数学思维能力(吴晓媚)
- 尔雅通识课《社会心理学》第三章社会化答案
- 2018年机关办公室主任年终述职报告
- 安徽省2016年下半年保险推销员考试题
- 初级会计
- 2016春形势与政策教案
- 08-12年上海高考地理试卷 -
- IDEO创新方法与设计管理(1)
- 内科学讲义
- 大学计算机基础期中测试题带答案
- 物理:1.1《质点 参考系和坐标系》教案(新人教版必修1)
- 商务谈判与礼仪重点知识
- 2015年研究生考试英语一试题(word版)
- 三相异步电机转速与制动研究毕业论文
- 日本RPD快速超前地质预报钻机简介 - 图文
- 小学数学毕业综合练习
- 六年级数学应用题分类复习试题
- (精品)plc和变频器wo毕业论文
- 小学信息技术教案六年级下册(南方出版社)