1.要求:完成标准中缀算术表达式求值运算.

来源:百度知道 编辑:UC知道 时间:2024/05/29 22:15:40
1.要求:完成标准中缀算术表达式求值运算。
2.中缀表达式由键盘输入,以回车键结束。如:3*((4+6)-(5-2)^3)
3.输入的中缀表达式符合以下要求:
(1) 中缀表达式长度不确定。
(2) 中缀表达式仅出现在一行输入行中。
(3) 中缀表达式中只包含5种2目运算符:+,-,*,/ ,^及两种优先级运算符“(”和“)”。
“^” 为指数运算,如:4^2=16。
(4) 中缀表达式中的运算数由{0,1,…,8,9}中的单个数字组成。
(5) 中缀表达式中不包含多余的空格。
(6) 中缀表达式在逻辑上和结构上如出现错误,程序应能提示错误

#include "stdafx.h"
#include "iostream.h"
#include "math.h"
#include "time.h"
#define TRUE 1
#define FALSE 0
#define ERROR -1
typedef int Status;
//用模板实现的链式结构堆栈类
template <class T>
class stack{
private:
struct link{
T data; //结点数据域
link *next; //下一结点指针
link(T Data,link* Next){//结构体构造函数
data=Data;
next=Next;
}
}*head; //堆栈顶指针
public:
stack(); //构造函数(初始化栈)
~stack(); //析构函数(销毁栈)
void push(T Data); //压栈操作
T gettop()const; //取栈顶元素
T pop(); //出栈操作
T getvalue(int index); //返回栈底开始第INDEX个栈中值
void traverse(int n); //遍历栈 N个数换行
int empty(); //判断栈是否为空,1是,0非
int sizeofstack(); //返回栈的大小
void clear(); //清空栈
};
//类模板成员函数的实现
template<class T> stack<T>::stack()//构造函数
{
head=0;
}
template<class T> stack<T>::~stack()