原理:
1.将中序表达式变化后续表达式
2.当前字符为数字,将该数字放入栈中
3.当前字符为操作符,从栈中取出两个树,根据操作符来运算,将运算结果放入到栈中
4.重复,直到将字符操作完,此时栈中只剩下一个元素,即要运算的结果
PS:我没有处理,只可以运行10以内的运算,如果有需要可以扩展
package com....
分类:
编程语言 时间:
2015-04-01 20:01:53
阅读次数:
149
最近的一个实验作业,要求用Java实现多项式的计算,书上的方法是将中序表达式先转化为后序表达式,然后进行运算。想到上学期实现真值表的时候用到的双栈方法,就尝试用双栈实现了一下,感觉要更好一些。最主要的是自己又把双栈敲了一遍,debug的同时也一点点把Java拾了起来,挺好。
代码实现:
节点类://定义节点类
class Lnode implements Comparable<Lnode<...
分类:
编程语言 时间:
2015-04-01 13:19:25
阅读次数:
162
package main
//表达式
//author:Xiong Chuan Liang
//date:2015-2-2
import (
"fmt"
"github.com/xcltapestry/xclpkg/algorithm"
"strconv"
"errors"
)
func main(){
// 中序表达式 后序表达式
// a+b...
分类:
编程语言 时间:
2015-02-02 23:10:39
阅读次数:
278
一、逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面。也称为后缀表达式。二、一般算法将一个普通的中序表达式转换为逆波兰表达式的一般算法是: 首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高...
分类:
其他好文 时间:
2014-12-06 12:45:15
阅读次数:
277
栈的基本特性是后进先出,最简单的用途是用于转置,还有其他诸如括号匹配,中序表达式(A+B*(C-D/(E+F)) --> ABCDEF+/-*+)和后续表达式(345+*612+/- --> 3*(4+5)-6/(1+2))互换等高级用法。示例代码:package chap04.Reverse;im...
分类:
编程语言 时间:
2014-10-14 17:38:38
阅读次数:
229
将带有计算的优先级和括号的中序表达式变成符合某文法的后序表达式。...
分类:
其他好文 时间:
2014-09-16 17:32:18
阅读次数:
192
/***************
逆波兰式即后缀表示法
预处理 ———— 中序表达式->逆序表达式(infix to postfix)
算法:
while(表达式非空)
if (遇到操作数)
直接输出
else if (遇到操作符op)
op是( 直接入栈s
op是) s.push输出,直到(
op是四则运算,则
if (s为空 || ...
分类:
其他好文 时间:
2014-09-13 21:32:25
阅读次数:
238