算法用于实现算符优先,使用了两个栈,一个用于存放运算符,一个用于存放操作数。算法中调用了InitStack函数构造空栈、GetTop函数返回栈顶元素、Pop函数删除栈顶元素、Push插入新的栈顶元素、Operate函数运算加减乘除、precede函数判断优先级、EvaluateExpression函数用于实现算符优先。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#define STACK_INIT_SIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define OPSETSIZE 7
char OPSET[OPSETSIZE]={'+','-','*','/','(',')','#'};
unsigned char prior[7][7] = {
{'>','>','<','<','<','>','>'},
{'>','>','<','<','<','>','>'},
{'>','>','>','>','<','>','>'},
{'>','>','>','>','<','>','>'},
{'<&