
内容来自:文档资源库http://www.93576.com/
更多"算术表达式求值演示-课程设计报告"相关资料请点击这里
题目: 题目:算术表达式求值演示 班级: 姓名: 学号: 完成日期:2011.12 班级:031021
班 姓名:李鑫 学号:03102067 完成日期:2011.12 一、 需求分析
1. 问题描述:表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个经
典例子。设计一个程序演示用算符优先法对算术表达式求值的过程。 2. 基本要求:利用
教科书表 3.1 给出的算符优先关系,实现对算术四则混合运算表达式 的求值。 3. 测试数
据:教科书例 3-1 的算术表达式 3*(7-2)。
二、 概要分析 栈的抽象数据类型定义
ADT SqStack{ 数据对象:D={ai| ai ∈ElemSet,i=1,2,3……,n,n≥0} 数据关系:R1={<ai-
1,ai>| ai-1,ai ∈D,i=1,2,3,……,n} 约定其中 ai 端为栈底,an 端为栈顶。 操作集合:
(1)void InitStack1(SqStack1 &S1);//声明栈建立函数 (2)void InitStack2(SqStack2 &S2);//声明
栈建立函数 (3)void evaluate(SqStack1 &S1,SqStack2 &S2);//确定如何入栈函数 (4)void
Push1(SqStack1 &S1,char e);//声明入栈函数 (5)void Push2(SqStack2 &S2,float e);//声明入压
栈函数 (6)char GetTop1(SqStack1 &S1);//声明取栈顶元素函数 (7)float GetTop2(SqStack2
&S2);//声明取栈顶元素函数 (8)char Pop1(SqStack1 &S1);//声明出栈函数 (9)float
Pop2(SqStack2 &S2);//声明出栈函数 (10)char Compare(char m,char n);//声明比较函数
(11)float Operate(float a,char rheta,float b);//声明运算函数 (12)void DispStack1(SqStack1
&S1);//从栈底到栈顶依次输出各元素 (13)void DispStack2(SqStack2 &S2);//从栈底到栈顶依
次输出各元素 }ADT SqStack
三、 详细设计
1
源程序
#include<iostream> using namespace std; #define STACK_INIT_SIZE 100 #define
STACKINCREMENT 10 typedef struct //运算符栈 { char *base; char *top; int stacksize;
}SqStack1;
typedef struct //运算数栈 { float *base; float *top; int stacksize; }SqStack2;
void InitStack1(SqStack1 &S1);//声明栈建立函数 void InitStack2(SqStack2 &S2);//声明栈建
立函数 void evaluate(SqStack1 &S1,SqStack2 &S2);//确定如何入栈函数 void Push1(SqStack1
&S1,char e);//声明入栈函数 void Push2(SqStack2 &S2,float e);//声明入压栈函数 char
GetTop1(SqStack1 &S1);//声明取栈顶元素函数 float GetTop2(SqStack2 &S2);//声明取栈顶
元素函数 char Pop1(SqStack1 &S1);//声明出栈函数 float Pop2(SqStack2 &S2);//声明出栈函
数 char Compare(char m,char n);//声明比较函数 float Operate(float a,char rheta,float b);//声明
运算函数 void DispStack1(SqStack1 &S1);//从栈底到栈顶依次输出各元素 void
DispStack2(SqStack2 &S2);//从栈底到栈顶依次输出各元素