文档介绍:实验3:栈和队列
一、实验目的
深入了解栈和队列的特性,学会在实际问题下灵活运用它们。
二、问题描述
表达式求值运算是实现程序设计语言的基本问题之一,也是栈应用的一个典型例子。设计并演示用算符优先级对算术表达式的求解过程。
三、实验要求
1、算法优先级别如下:
'+', '-', '*', '/', '(', ')', '#'
'+' '>', '>', '<', '<', '<', '>', '>',
'-' '>', '>', '<', '<', '<', '>', '>',
'*' '>', '>', '>', '>', '<', '>', '>',
'/' '>', '>', '>', '>', '<', '>', '>',
'(' '<', '<', '<', '<', '<', '=', ' ',
')' '>', '>', '>', '>', ' ', '>', '>',
'#' '<', '<', '<', '<', '<', ' ', '='
2、以字符序列的形式从终端输入语法正确、不含变量的算术表达式,利用给出的算符优先级关系,实现对算术四则混合运算的求解过程。
 四、实验环境
PC微机
DOS操作系统或 Windows 操作系统
Turbo C 程序集成环境或 Visual C++ 程序集成环境
 五、实验步骤
根据给出的算符优先级,设置运算符栈和运算数栈;
在读入表达式的同时,完成运算符和运算数的识别处理,并将运算数的字符序列形式转换成整数形式,并进行相应的运算;
调试程序,检查输出结果;
实验小结。
 六、测试数据
输入数据:1+(20+4)/(4-1)
正确结果:9
输入数据:2*9-6-(20+4)/(4-1)
正确结果:4
七、实验报告要求
实验报告应包括以下几个部分:
1、问题描述;
2、算法的设计描述;
3、测试结果的分析与讨论。
4、设计与实现过程中的体会,进一步的改进设想。
实现算法的程序清单,应有足够的注释。
实验代码如下:
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
#define MAX 1000
struct save1
{
float n[MAX];
int top;
}stack1;
struct save2
{
char n[MAX];
int top;
}stack2;
//stack1存储数字,stack2存储运算符号.
bool stackempty(save1 s)//判断是否为空
{
if (== -1)
return 1;
else
return 0;
}
bool stackempty2(save2 s)//判断是否为空
{
if (== -1)
return 1;
else
return 0;
}
void