栈直接用链表实现,这个比较简单,不多说,不过C++写程序,IDE的错误检测不是很给力。
至于给定一个中缀表达式,如何不转换成后缀表达式,直接求值,方法就是使用两个栈,一个操作符栈,一个操作数栈,然后从左到右扫描表达式,我这里中缀表达式计算实现的很简单,不完整,大家可以扩展。栈的实现是我想写的,思路如下:
1.如何是操作数,压入操作数栈
2.如果是操作符,压入操作符栈
3.如果是左括号,直接忽略
4.如果是有括号,弹出操作符栈栈顶元素,然后弹出操作数栈两个元素,进行操作以后结果压入操作数栈
看个图就好了
最后给出栈顶实现代码
然后是main函数代码
另外,今天是博客建站一周年.加油!