文章

27

粉丝

0

获赞

125

访问

6.7k

头像
P1281 计算表达式 答疑提问:

#include<bits/stdc++.h>
using namespace std;




int main(){
	map<char,int> m;
	m['+'] = 1;
	m['-'] = 1;
	m['*'] = 2;
	m['/'] = 2;
	stack<char> s;
	char a[100];
	char b[100];
	int cnt = 0;
	
	gets(a);
	int len = strlen(a);
//	for(int i = 0;i<len;i++){
//			printf("%c",a[i]);
//		}
		bool flag = false;
	for(int i = 0;i<len;i++){
		
		char c = a[i];
		if(c>='0'&c<='9'){
			b[cnt++] = a[i];
			
		}else{//操作符 
			flag = false;
			if(s.empty()||m[c]>m[s.top()]){
				s.push(c);
			}else{
				while(!s.empty()&&m[c]<=m[s.top()]){
					b[cnt++] = s.top();
					s.pop();
				}
				s.push(c);
				
			}
				
		}
	}
		
		while(!s.empty()){
			b[cnt++] = s.top();
			s.pop();
		}
		
//		for(int i = 0;i<len;i++){
//			printf("%c",b[i]);
//		}
		stack<int> k;
		//转成后缀 计算
		for(int i = 0;i<len;i++){
			char c = b[i];
			if(c>='0'&c<='9'){
					k.push(c-'0');	
			}else{
		...
登录查看完整内容


登录后发布评论

4 条评论
admin SVIP
2025年2月25日 17:56

这里可以先拼接为整数

赞(1)

jsd : 回复 admin: 那我在后缀表达式求值的时候怎么判断他是什么呢,后缀表达式中会出现数字连在一起

2025年2月25日 18:01

admin : 回复 jsd: 对于数字再开一个栈单独存储

2025年2月26日 01:37

jsd : 回复 admin: 懂了,谢谢

2025年2月27日 17:48