【c++栈】栈的计算图解

表达式一般由操作数(Operand)、运算符(Operator)组荿例如算术表达式中,通常把运算符放在两个操作数的中间

波兰数学家Jan Lukasiewicz提出了另一种数学表示法,它有两种表示形式:

其中逆波兰表达式在编译技术中有着普遍的应用。

一、 将中缀表达式转换成后缀表达式算法:

1、从左至右扫描一中缀表达式

2、若读取的是操作数,則判断该操作数的类型并将该操作数存入操作数堆栈

  (1) 该运算符为左括号"(",则直接存入运算符堆栈

  (2) 该运算符为右括号")",则输出运算符堆棧中的运算符到操作数堆栈直到遇到左括号为止。

      (b) 若比运算符堆栈栈顶的运算符优先级高或相等则直接存入运算符堆栈。

      (c) 若比运算符堆栈栈顶的运算符优先级低则输出栈顶运算符到操作数堆栈,并将当前运算符压入运算符堆栈

4、当表达式读取完成后运算符堆栈中尚囿运算符时,则依序取出运算符到操作数堆栈直到运算符堆栈为空。

二、逆波兰表达式求值算法:

1、循环扫描语法单元的项目

2、如果掃描的项目是操作数,则将其压入操作数堆栈并扫描下一个项目。

3、如果扫描的项目是一个二元运算符则对栈的顶上两个操作数执行該运算。

4、如果扫描的项目是一个一元运算符则对栈的最顶上操作数执行该运算。

5、将运算结果重新压入堆栈

6、重复步骤2-5,堆栈中即為结果值

//中置转后置的表达式

//中置转后置的表达式

加载中,请稍候......

用c++编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:初始化栈S判断栈S是否非空。依次进栈元素a,b,c,d,e输出栈的长度。输出从栈顶到棧底的元... 用c++编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:
输出从栈顶到栈底的元素
来自电腦网络类芝麻团 推荐于
 
编写一个程序,实现循环队列的各种基本运算并在此基础上设计一个主程序完成如下功能:
初始化队列Q。
判断队列Q是否非空
依次进队列元素a,b,c。
出队一个元素输出该元素。
输出队列Q的元素个数
依次进入队列元素d,e,f。
输出出队序列
释放队列。
发了兩遍你可以解答那个20分的那一道。谢谢啦!

我要回帖

更多关于 栈的计算图解 的文章

 

随机推荐