c语言编程实现表达式求值,c语言实现表达式求值的方法

本文详细介绍了如何使用C语言实现表达式求值,包括操作符和操作数的栈管理,以及如何处理括号运算。通过一系列的函数实现,如Init_OptrStack、Push_OpndStack等,配合运算符优先级判断,实现了简单的算术表达式的计算。
摘要由CSDN通过智能技术生成

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))</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值