博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用堆栈进行表达式求值的方法(二)
阅读量:5747 次
发布时间:2019-06-18

本文共 353 字,大约阅读时间需要 1 分钟。

hot3.png

在中描述的方法并不能解决“(1+((2*3+4)*(4*5))”该问题,现将2个堆栈变成1个堆栈,方法如下:

1、将表达式从左到右开始逐个将左括号、数值和操作符压入栈中;

2、遇到右括号时,将栈中元素逐个弹出,直到弹出左扩号为止;

3、将弹出的元素存放置一个临时的线性集合中(数组、链表或者堆栈中),如果是数组和链表从后向前依次遍历出子表达式,并按照加减乘除的优先级计算表达式的值,然后再将值压入栈中;

4、重复1~3的步骤,最后计算的值为表达式的最终结果。

使用该方法可以解决类似于a  and  b  not  c这样的逻辑运算问题,后面的重点还是讨论如何将该方法用于正则表达式转换成非确定性有限自动机NFA!

转载于:https://my.oschina.net/u/1268334/blog/3023702

你可能感兴趣的文章
Js中this机制全解
查看>>
VS扩展异常(未解决)
查看>>
数据结构上机实验之二分查找
查看>>
JAVA获取一个图片路径后,下载该图片再重新上传至指定路径中
查看>>
angularJS中XHR与promise
查看>>
firefox
查看>>
JSTL中替换\r\n
查看>>
LTE协议命名
查看>>
JavaScritp的随想
查看>>
[Android Pro] Test win
查看>>
子元素宽度为100%,缩小窗口,父元素出现横向滚动条,滚动条向右拉,父元素右边有一块空白区域,没有背景颜色...
查看>>
Linux week 7
查看>>
重叠IO
查看>>
hotmail解码遇到的&#解码问题
查看>>
Postgresql pg_restore
查看>>
架构师速成-架构的目标
查看>>
cocos2dx 3.0打包android遇到的错误(持续更新)
查看>>
hdu oj 3371 Connect the Cities (最小生成树)
查看>>
OC的动态继承编译机制
查看>>
20_分钟构建你自己的_Linux_发行版
查看>>