文档章节

逆波兰表达式求值 javascript版

云墨雪
 云墨雪
发布于 2015/12/01 10:59
字数 289
阅读 172
收藏 1

代码地址: http://runjs.cn/code/r06uftvp

  1. 首先得弄明白什么是 逆波兰表达式 参见 : http://www.cnblogs.com/chenying99/p/3675876.html

  2. 大致总结一下

    1. 我们平常的计算方法, 运算符放在两个数字之间 叫做 中缀表达式

      1. 如 2 + 3 * (5 - 1)

    2. 运算符放在两个数字前, 叫做 前缀表达式, 也叫 波兰式

      1. 如 + 2 * 3 - 5 1 

      2. 从左往右直到遇见两个数字就用 两个数字前的 运算符 计算

    3. 运算符放在两个数字后, 叫做 后缀表达式, 也叫 逆波兰式

      1. 如 2 3 5 1 - * +

      2. 从右往左直到遇见两个数字就用 两个数字后的 运算符 计算

  3. 根据逆波兰式的计算方式我们可以得出一些简单的表达式验证方法

    1. 前两位必须是数字

    2. 运算符的个数只能比数字个数少一个

    3. 最后一位必须是运算符

    4. 连续运算符的长度只能比前边的数字少一个 (如 :3 3 - - 3 3 -, 是不对的)

© 著作权归作者所有

共有 人打赏支持
云墨雪
粉丝 3
博文 12
码字总数 5234
作品 0
郑州
程序员
加载中

评论(1)

SoulGuo
SoulGuo
吊吊吊! 重要的事情说三遍!!!
堆栈的应用——用JavaScript描述数据结构

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。 一、实现一个栈类Stack 基于堆栈的特性,可以...

我是leon
08/10
0
0
AngularJs学习笔记--expression

一、Angular表达式 vs. Js 表达式   这很容易让人将angular视图表达式联想为javascript表达式,但这并不完全正确,因为angular不是通过javascript的eval()对表达式进行求值。你可以将angul...

武文海
2015/02/06
0
0
JS 实现 JS 引擎 - 二元逻辑运算符的后缀表达式求值

代码修改自我在 javascript中运算符优先级的问题 中的回答 完整的 JS 引擎还需要处理运算符优先级的问题,这里简化复杂度,人工把表达式转换成后缀表达式再用程序进行自动求值 主要目的在于演...

bf
08/27
0
0
JavaScript 编程精解 中文第三版 十二、项目:编程语言

十二、项目:编程语言 原文:Project: A Programming Language 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 确定编程语言中的表达式...

ApacheCN_飞龙
05/11
0
0
计算逆波兰式

在程序设计中,可能碰到需要对字符串数学表达式求值的问题,常用的方法是解析表达式,生成二叉树,然后进行计算。编译器就是使用这种方法来解析程序中的表达式的。这种方法实现起来有点难度,...

一贱书生
2016/12/26
25
0

没有更多内容

加载失败,请刷新页面

加载更多

Java Lock接口分析之ReentantReadWriteLock

ReentantReadWriteLock读写锁,在读线程多余写线程的并发环境中能体现出优异的性能,相比于synchronized与ReentrantLock这种独占式锁的模型,ReentantReadWriteLock采用独占式写锁与共享式读...

我爱春天的毛毛雨
12分钟前
0
0
EFK (Fluentd ElasticSearch Kibana) 采集nginx日志

本文描述如何通过FEK组合集中化nginx的访问日志。本人更喜欢按顺序来命名,所以使用FEK而不是EFK. 首先在nginx服务器上执行以下操作. 安装ruby http://blog.csdn.net/chenhaifeng2016/artic...

xiaomin0322
13分钟前
0
0
一键下载:将知乎专栏导出成电子书

老是有同学问,学了 Python 基础后不知道可以做点什么来提高。今天就再用个小例子,给大家讲讲,通过 Python 和爬虫,可以完成怎样的小工具。 在知乎上,你一定关注了一些不错的专栏(比如 ...

crossin
22分钟前
1
0
synchronized 之 对象锁 和 类锁

一、synchronized(object) 如果object没有被加锁,则获取object的锁;如果object已经被加锁则等待object的锁被释放。 二、需要加锁的情景 多线程共享同一资源会引起线程安全的情况下,才需要...

MyOldTime
24分钟前
6
0
tomcat 单机/多机 部署多应用

一.单机部署多应用: 1.在 linux 下解压安装两个 tomcat:tomcat1, tomcat2; 2.修改 /etc/profile, 增加 tomcat 环境变量: path 中加上 重新加载配置文件 source /etc/profile 3.修改 tomc...

imbiao
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部