实验要求:
运用栈的操作实现基本表达式求值
代码如下:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
//定义优先级: +,- ,* ,/ ,(,),#
//第一维表示栈内
char operate[7]={'+','-','*','/','(',')','#'};
char prior[7][7] = {
{'>','>','<','<','<','>','>'}
,{'>','>','<','<','<','>','>'}
,{'>','>','>','>','<','>','>'}
,{'>','>','>','>','<','>','>'}
,{'<','<','<','<','<','=',' '}
,{'>','>','>','>',' ','>','>'}
,{'<','<','<','<','<',' ','!'}
};
//顺序栈
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef double ElemTypeDouble;
typedef char ElemTypeChar;
//数字栈的结构
typedef struct{
ElemTypeDouble elem[MAXSIZE];
int top;
int stackSize;
}OPND;
//运算符栈的结构
typedef struct{
ElemTypeChar elem[MAXSIZE];
int top;
int stackSize;
}OPTR;
//初始化栈
int initStack(OPND &S){
S.