逆波兰计算器(C语言栈实现)
逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为2 3 +。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为*2 3 + 4 *。其中运算符包括+ - * /四个。
并且由于栈具有后进先出的特性,所以用来实现逆波兰计算器就会十分方便.
话不多说,让我们上代码~:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
# define STACK_INIT_SIZE 20
# define STACKINCREMENT 10
# define MAXBUFFER 10
typedef double ElemType;
typedef struct
{
ElemType *base;
ElemType *top;
int stackSize;
}sqstack;
void Initstack(sqstack *s)
{
s->base =(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!s->base)
{
exit(0);
}
s->top=s->base;
s->stackSize=STACK_INIT_SIZE;
}
void push(sqstack *s,ElemType e)
{
if(s