要求:
按常规形式输入算术表达式(例如:输入2*(6-4)+8/4),要求能够:
⑴生成表达式的前缀、后缀表示,并输出;
⑵基于表达式的前缀、后缀、中缀表示,对该表达式求值;
⑶编写一个主程序对表达式求值函数进行测试。
代码
#include<bits/stdc++.h>
#define Max_size 100
using namespace std;
typedef struct
{
char elem[Max_size];
int length;
}CharStack;
typedef struct
{
int elem[Max_size];
int length;
}IntStack;
int index (char c)
{
if (c=='+') return 0;
else if (c=='-') return 1;
else if (c=='*') return 2;
else if (c=='/') return 3;
else if (c=='(') return 4;
else if (c==')') return 5;
else
return 6;
}
int value[7][7]={
{
1,1,-1,-1,-1,1,1},
{
1,1,-1,-1,-1,1,1},
{
1,1,1,1,-1,1,1},
{
1,1,1,1,-1,1,1},
{
-1,-1,-1,-1,-1,0,0},
{
1,1,1,1,0,1,1},
{
-1,-1,-1,-1,-1,0,0}};
void initialoptr(CharStack &s)
{
s.length=0;
}
void initialopnd(IntStack &s)
{
s.length=0;
}
void push_optr(CharStack &s,char c)
{
s.elem[s.length++]=c;
}