[问题描述]
利用栈实现算术表达式的求值。可以简单一些,假设表达式中含有一位整数,以及+、-、*、/、(、)。但不受此限制。(难易程度:中)
[实验目的]
1、掌握栈的应用。
2、掌握算符优先表达式求值的算法。
3、掌握字符串处理和数值的转换。
[实验内容及要求]
1、表达式以字符串形式输入,并以‘#’开始和结束(‘#’也作为算法来处理)。如输入:#6+3*(9-7)-8/2#
[测试数据]
1、#6+3*(9-7)-8/2#
2、#(8-2)/(3-1)*(9-6)#
3、#5+(7-3)*6#
//seqstack.h
#include<iostream>
using namespace std;
const int size=10; //size为顺序栈的最大存储大小
template<class T>
class seqstack //seqstack类
{
private:
T data[size]; //data存储数据
int top; //top为栈顶
public:
seqstack(){top=-1;}
~seqstack(){}
void push(T x); //入顺序栈
T pop(); //出顺序栈
T gettop(); //取栈顶
};
template<class T>
void seqstack<T>::push(T x) //入顺序栈
{
data[++top]=x;
}
template<class T>
T seqstack<T>::pop() //出顺序栈
{
T x;
x=data[top--];
return x;
}
template<class T>
T seqstack<T>::gettop()//取栈顶
{