Infix to postfix 用stack模板,表达式没有括号

Posted KennyRom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Infix to postfix 用stack模板,表达式没有括号相关的知识,希望对你有一定的参考价值。

#include<stack>
#include<iostream>
#include<string>
using namespace std;

//优先级判断
char compare(char opt, char si)
{
	if((opt==‘+‘||opt==‘-‘)&&(si==‘*‘||si==‘/‘)
		return ‘<‘;
	else if(opt==‘#‘)
		return ‘<‘;
	return ‘>‘;
}

//判断是否为运算符
bool isOp(char c)
{
	if(c==‘+‘||c==‘-‘||c==‘*‘||c==‘/‘)
		return true;
	return false;
}

int main()
{
	stack<char>op;
	stack<char>num;
	op.push(‘#‘);
	num.push(‘#‘);
	
	string s;
	cin>>s;
	
	for(int i=0;i<s.size();i++)
	{
		if(!isOp(s[i]))
			num.push(s[i]);
		else
		{
			char c=compare(op.top(),s[i]);
			if(c==‘<‘)
				op.push(s[i]);
			else
			{
				num.push(op.top());
				op.pop();
				op.push(s[i]);
			}
		}
	}
    
	while(op.top()!=‘#‘)
	{
		num.push(op.top());
		op.pop();
	}

    string s1="";

    while(num.top!=‘#‘)
    {
	     s1=s1+num.top();
		 num.pop();
    }	

     for(int i=0;i<s1.size()/2;i++)
	 {
		 char temp=s1[i];
		 s1[i]=s1[s1.size()-1-i];
		 s1[s1.size()-1-i]=temp;
	 }		 

     cout<<s1<<endl;	 
	 
     return 0;
}

  

以上是关于Infix to postfix 用stack模板,表达式没有括号的主要内容,如果未能解决你的问题,请参考以下文章

Infix to posfix 自己写stack,没有()

如何在Postfix和Infix表示法中接受负值?

How to configure postfix to send email via Gmail

How to configure postfix to send email via Gmail

在 SML Alice 中创建中缀/后缀/前缀解析器

Postfix接收邮件后转向运行特定的脚本