利用栈实现的简单中缀表达式求值(C语言)
这只是个小作业,要求实现简单中缀表达式求值
所谓前缀、中缀、后缀,是指运算符相对于运算数的位置而言,看如下例子:
(1 + 2) × 3 - 4 就是中缀表达式
- × + 1 2 3 4 就是前缀表达式
1 2 + 3 × 4 - 就是后缀表达式
所以其实只有加、减、乘、除以及括号的四则运算,大致思路是定义了两个栈:操作符栈和操作数栈,顾名思义,操作符用于存放运算符,操作数用于存放运算数字。代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
/**
* 操作栈的相关定义
*/
typedef struct
{
char *elem;
int top;
int size;
}Sqstack;
//定义操作符栈和操作数栈
Sqstack Ope;
Sqstack Num;
void Initstack(Sqstack *s) //初始化栈
{
s->size=50;
s->top=0;
s->elem=(char*)malloc(s->size*sizeof(char));
if(!s->elem)
printf("OVERFLOW");
}
void Push(Sqstack *s,char e) //入栈
{
if(s->top>=s->size)//栈内存不够时
{
char *newelem;
int increment=50;
newelem=(char*)realloc(s->elem,(s->size+increment)*sizeof(char));
s->elem=newelem;
s-&