文章
27
粉丝
0
获赞
125
访问
6.7k
#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{
...
登录后发布评论
这里可以先拼接为整数