将中缀表达式转换成后缀表达式
我们人脑很容易理解中缀表达式,但是中缀表达式在计算机并不好计算,所有我们要将中缀表达式转换成后缀表达式,因为后缀表达式是很容易计算的。为什么要写一个这样的程序呢?原因是我一开始想写一个计算机,它能够将输入的表达式的值计算出来。一开始觉得这样子的程序应该是很简单的,然后开始动手写,开始写了之后才发现并不是那么简单。后来我知道了后缀表达式,才知道原来要这样子才能将表达式的值计算出来。 言归正传 首先是将中缀表达式转换成后缀表达式的方法: 1、遇到操作数:直接输出(添加到后缀表达式中) 2、栈为空时,遇到运算符,直接入栈 3、遇到左括号:将其入栈 4、遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出 5、遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈 6、最终将栈中的元素依次出栈,输出 看似很简单,但是写起来真的很头痛。为此我画了好多流程图。我觉得画流程图挺好的,能加深理解。 这次我决定用C 语言。 首先要做一些准备工作。 一、实现堆栈的数据结构,具有以下方法: 1. 初始化堆栈,返回堆栈指针 2. 压入一个元素 3. 弹出一个元素 我所实现的这个堆栈的栈顶元素是空的,它只用于指向堆栈的第一个元素,如果堆栈为空的则它指向NULL。 具体代码: //实现栈的数据结构 typedef struct Node {