波兰表达式(中缀表达式转化后缀表达式+可应用于多位数计算)
代码
#include <iostream>
using namespace std;
#include <string>
#define CAPACITY (50)
struct Stack
{
double *top;
double *base;
int StackSaize;
};
Stack *init(Stack *s)
{
s->base = new double[CAPACITY];
if (!s->base)
{
exit(0);
}
s->top = s->base;
s->StackSaize = CAPACITY;
return s;
}
int priority(char s)
{
int i = 0;
switch (s)
{
case '(':
i = 1;
break;
case ')':
i = 5;
break;
case '-':
i = 2;
break;
case '+':
i = 2;
break;
case '*':
i = 4;
break;
case '/':
i = 4;
break;
default:
i = -1;
break;
}
return i;
}
Stack *push(Stack *s, char ch)
{
*++s->top = (double)ch;
return s;
}
Stack *pop(Stack *s,double &elem)
{
if(s->base == s->top)
{
cout<<"栈为空"<<endl;
return