c语言实现表达式求值的方法
发布时间:2020-06-22 16:45:46
来源:亿速云
阅读:82
作者:Leah
这期内容当中小编将会给大家带来有关c语言实现表达式求值的方法,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
一.不包括括号运算#include
#include
#include
#include
#include
#define STACK_INIT_SIZE 100
using namespace std;
typedef struct
{
char date[STACK_INIT_SIZE];
int top;
}OptrStack; //操作符结构体
typedef struct
{
double date[STACK_INIT_SIZE];
int top;
}OpndStack; //操作数结构体
//操作符相关操作
OptrStack *Init_OptrStack(); //置栈空
int Empty_OptrStack(OptrStack *s);//判空栈
int Push_OptrStack(OptrStack *s, char x);//入栈(注意:判断栈是否已满)
char Pop_OptrStack(OptrStack *s, char x);//出栈(注意:判断栈是否已空)
char GetTop_OptrStack(OptrStack *s, char x);//取栈顶元素,先判空
//操作数相关操作
OpndStack *Init_OpndStack();//置栈空
int Empty_OpndStack(OpndStack *t);//判空栈
int Push_OpndStack(OpndStack *t, double y);//入栈(注意:判断栈是否已满)
double Pop_OpndStack(OpndStack *t, double y);//出栈(注意:判断栈是否已空)
double GetTop_OpndStack(OpndStack *t, double y);//取栈顶元素
//表达式求值函数
void Error(char *s); //错误处理函数
int Judge_optr(char ch); //用于判断字符ch是否是运算符
int Operate(int a, int b, char top); //用于计算当前的值,并将该值返回
void Jsbds_operate(char str[]); //读入一个简单算术表达式的值
//操作符函数实现部分
OptrStack *Init_OptrStack()
{
OptrStack *s;
s = (OptrStack *)malloc(sizeof(OptrStack));
s->top = -1;
return s;
}
int Empty_OptrStack(OptrStack *s)//判空栈
{
if (s->top != -1)
return 1;
else
return 0;
}
int Push_OptrStack(OptrStack *s, char x)//入栈(注意:判断栈是否已满)
{
if (s->top == (STACK_INIT_SIZE - 1))
{
return 0;
}
else
s->date[++s->top] = x;
return 1;
}
char Pop_OptrStack(OptrStack *s, char x)//出栈(注意:判断栈是否已空)
{
if (!Empty_OptrStack(s))
{
return 0;
}
else
x = s->date[s->top];
s->top--;
return x;
}
char GetTop_OptrStack(OptrStack *s, char x)//取栈顶元素,先判空
{
if (!Empty_OptrStack(s))</