利用栈进行表达式求值
实验步骤
1)构建操作数栈和运算符栈
2)确定优先级
3)括弧匹配
4)利用运算符栈转换成后缀式
5)利用操作数栈解出结果
源码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <ctype.h>
#include <assert.h>
#include <string.h>
#define STACK_INIT_SIZE 100
#define STACK_INCREMENT 10
typedef float DATATYPE;
typedef char SYMBOLTYPE;
typedef struct stack
{
int *base;
int *top;
int stackSize;
}*Stack;
// 栈的初始化
Stack Init_Stack(Stack S)
{
S=(Stack)malloc(sizeof(Stack));
if(!S)
exit(0);
S->base = (int*)malloc(STACK_INIT_SIZE*sizeof(DATATYPE));
if(!S->base)
exit(0);
S->top = S->base;
S->stackSize = STACK_INIT_SIZE;
return S;
}
// 判栈空
int IsEmpty(Stack S)
{
if (S-&