数据结构栈之计算后缀表达式

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构栈之计算后缀表达式相关的知识,希望对你有一定的参考价值。

对于一个给定的后缀表达式,(如果它是合法的)

注意:次算法是基于基本操作符是2元操作符且操作数为一位正整数!

其求值的基本思想是:对于给定的表达式进行遍历,假设遇到的是操作数就将其压入栈;假设遇到的是操作符,将栈顶的两个元素弹出,假设栈顶两个元素依次为a,b(a在上b在下),将次操作符应用于这两个栈顶元素,比方b-a(注意b在左a在右)然后将计算结果压入栈(用来充当下一个操作符的操作数);

 最后输出栈顶元素即为结果(事实上假设表达式合法终于栈里面一定会仅仅有一个元素)

 

#include <stdio.h> //后缀表达式求值
#include <iostream>
#include <cstring>
#include <stack>
#include <ctype.h>
#include <algorithm>
using namespace std;
int main()
{
	char c;
	stack <int> s;
	while(scanf("%c",&c)!=EOF)
	{
		if(c==‘#‘)break;
		if(isdigit(c))
			s.push(c-‘0‘);
		else
		{
			int a=s.top();
			s.pop();
			int b=s.top();
			s.pop();
			switch(c)
			{
				case ‘+‘:s.push(b+a);break;
				case ‘-‘:s.push(b-a);break;
				case ‘*‘:s.push(b*a);break;
				case ‘/‘:s.push(b/a);break;
			}
		}
	}
	cout<<s.top()<<endl;
	return 0;
}

 

 

以上是关于数据结构栈之计算后缀表达式的主要内容,如果未能解决你的问题,请参考以下文章

c语言 后缀表达式计算

Java数据结构—前缀中缀波兰表达式

数据结构之栈

数据结构与算法中缀表达式转后缀表达式以及后缀表达式的计算

java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号

python数据结构之转后缀表达式计算(栈的应用)