中缀表达式转化成后缀表达式的计算(4)
时间:2025-04-30
时间:2025-04-30
中缀表达式的直接计算,中缀表达式转化成后缀表达式的计算
图 3 直接计算中缀表达式
三、源代码
先将中缀表达式转化成后缀表达式,在进行后缀表达式的计算,最后将结果显示。 下面给出的是用第一种算法实现的的程序的源代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//创建存放字符的结构体
typedef struct
{
int level; char ch; //定义ch 存放操作符 //定义level 存放操作符的优先级
}OpNode;
//创建字符栈
typedef struct
{
OpNode opNode[100];
中缀表达式的直接计算,中缀表达式转化成后缀表达式的计算
int top;
int size; //存放栈顶的数 //存放当前栈的大小
}OpStack;
//对字符栈的初始化
void Op_init(OpStack *ops)
{
} ops->top = 0; ops->size = 0;
//字符栈的入栈操作
void Op_push(OpStack *ops,OpNode op)
{
} ops->size++; ops->opNode[(ops->top)++] = op;
//字符栈的出栈操作
OpNode Op_pop(OpStack *ops)
{
} if(ops->size == 0) { } ops->size--; exit(-1); //判断栈是否为空,如果为空,则退出程序,否则出栈 return ops->opNode[--(ops->top)];
//看字符栈顶操作
OpNode Op_getTop(OpStack *ops)
{
} int len = ops->size; return ops->opNode[len - 1];
//创建存放数的结构体
typedef struct
{
double d; //定义 d 存放操作数
}TdNode;
//创建数栈
typedef struct
{
TdNode tdNode[100]; int size; int top;
}TdStack;
//数栈的初始化
下一篇:O型圈技术手册