码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-10-09 00:16:45      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

#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模板,表达式没有括号

标签:

原文地址:http://www.cnblogs.com/KennyRom/p/5940574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!