如果有更好的想法,随时欢迎私我!
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
//定义两个栈,分别存放运算数和运算符
struct SNode_Num
{
int datas[MAX];
int top;
};
typedef struct SNode_Num OperateNum;
struct SNode_Symbol
{
char symbol[MAX];
int top;
};
typedef struct SNode_Symbol OperateSymbol;
//取出相应的数
int GetOperateNum(OperateNum *StackNum)
{
return StackNum->datas[StackNum->top];
}
//取出相应运算符
char GetOperateSymbol(OperateSymbol *StackSymbol)
{
return StackSymbol->symbol[StackSymbol->top];
}
//运算数进栈
void PushOperateNum(OperateNum *StackNum, int x)
{
StackNum->top++;
StackNum->datas[StackNum->top] = x;
}
//运算符进栈
void PushOperateSymbol(OperateSymbol *StackSymbol, char ch)
{
StackSymbol->top++;
StackSymbol->symbol[StackSymbol->top] = ch;
}
//运算数退栈
int PopOperateNum(OperateNum *StackNum)
{
int num;
num = StackNum->datas[StackNum->top];
StackNum->top--;
return num;
}
//运算