栈的应用-中缀表达式转后缀表达式(简单表达式)

88 阅读1分钟
int compare(char s){
	switch(s){
		case '#': return 0;
		case '(': return 1; 
		case '+': return 2;
		case '-': return 2;
		case '*': return 3;
		case '/': return 3;
		case ')': return 4;
	}
}
string toPostFix(string str){
	string num;
	stack<char>s;
	cin>>str;
	int i=0;
	while(i<str.size()){
		if(str[i]>'0'&&str[i]<'9'){
			num.push_back(str[i]);
			i++;
		}
		else{
			if(s.empty()||str[i]=='('){
				s.push(str[i]);
				i++;
				continue; 
			}
			if(compare(str[i])>compare(s.top())||s.top()=='('){
				if(str[i]==')'){
					while(s.top()!='('){
						num.push_back(s.top());
						s.pop();
					}
					s.pop();
					i++;
					continue;
				}
				s.push(str[i]);
				i++;
			}
			else{
				num.push_back(s.top());
				s.pop();
			}
		}
	}
	return num;
}