实验二 算术表达式(2)

2019-01-27 11:26

操作结果:若栈为空,则返回S的栈顶元素;否则返回ERROR。 (2). void Push(SqStack *S,int e) 初始条件:栈存在;

操作结果:插入e为新的栈顶元素。 (3). int Pop(SqStack *S) 初始条件:栈存在;

操作结果:若栈不空,则删除之,并返回其值;否则返回REEOR。(4).void InitStack(SqStack *S) 初始条件:栈存在; 操作结果:置栈为空。 (5). int Empty(SqStack *S) 初始条件:栈存在;

操作结果:判定S是否为空栈。

4.4主程序的模块调用

主程序 读入字符 输入字符有效及优先级的判断 运算模块 输出结果 图4.4主程序模块图

5

4.5主要实现的功能函数

4.5.1包含的主要函数功能所具有的功能

Initstack():构造一个空栈 Push():插入元素进栈 GetTop():返回栈顶元素 Pop():字符元素出栈

get():从输入的字符串中依次读入每一个字符

4.5.2数据结构设计 具体结构定义如下:

#define StackSize 100 #define QueueSize 100 typedef char DataType; typedef struct { char data[100]; int front,rear; }SeqQueue;

5详细设计

5.1功能模块详细设计

5.1.1详细设计思想

求解表达式的主要思想是创建两个栈,一个是符号栈,另一个是数字栈。符号栈关键是运算优先顺序,数字栈关键是多位数与小数的计算。本程序设计了四个模块,第一个模块void CTpostExp(SeqQueue *Q),主要目的是进行加减乘除的

6

操作方法;第二个模块int Priority(DataType op),主要目的是对用户输入的算术表达式进行求解,是运算符的优先顺序;第三个模块是主函数,主要目的是将上述模块集中运行,进行求解。至此完成利用栈结构求解表达式运算。

5.2中缀表达式转换成后缀表达式

先初始化栈,然后将‘=’进栈,读取字符,若它为数字,则一次存入CTpostExp中,并以‘#’标志结束,若为运算符,则和栈顶运算符比较,如果栈顶运算符优先级则该运算符进栈。待字符串扫描完毕,则将运算符栈中‘=’之前所有运算符出栈并存放postQ中,最后得到后缀表达式CpostExp.

5.3后缀表达式求值

从左到右读入后缀表达式,若读入的是一个操作数,就将它入数值栈。若读入的是一个运算符,就从数值栈中连续出栈两个元素,并将计算结果入数值栈,对整个后缀表达式读入结束时,栈顶元素就是计算结果。

6运行与测试

测试结果

9-(2+4*7)/5+3#,输出结果为:9247*+5/-3+,值为6

5*(5-2)#,输出结果为:552-*,值为15

7

7总结和心得

参考文献

[1] 《数据结构课程设计》-----苏仕华 等编著 [2] 《数据结构(C语言版)》-----严蔚敏 吴伟民编著 [3] 《C程序设计(第三版)》------谭浩强 著

8

8.附:源代码

#include #define StackSize 100 #define QueueSize 100 /*队列的相关操作*/ typedef char DataType; typedef struct {

char data[100]; int front,rear;

}SeqQueue; //定义队列类型

void InitQueue(SeqQueue * Q) //初始化队列 {

Q->front=0; Q->rear=0; }

int QueueEmpty(SeqQueue * Q) //判空队列 {

return Q->rear==Q->front ; }

void EnQueue(SeqQueue *Q,DataType x) //入队列{

if((Q->rear +1) % QueueSize ==Q->front ) printf(\ else {

Q->data[Q->rear]=x;

Q->rear=(Q->rear+1) % QueueSize; } }

DataType DeQueue(SeqQueue *Q) //删除队列 {

DataType e; if(Q==NULL)

printf(\ else {

e=Q->data[Q->front];

Q->front=(Q->front+1) % QueueSize; }

return e; }

9


实验二 算术表达式(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一年级阅读教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: