//表达式转换
#include<bits/stdc++.h>
using namespace std;
stack<char> st;
map<char,int> mp;
int main()
{
mp['+']=mp['-']=1;
mp['*']=mp['/']=2;
int flag=1;
string str="";
cin>>str;
for(int i=0;i<str.length();i++)
{
//处理操作数
if(isdigit(str[i])||((i==0||str[i-1]=='(')&&(str[i]=='+'||str[i]=='-')))
{
if(!flag)
cout<<" ";
else
flag=0;
if(str[i]!='+')
cout<<str[i];
while(str[i+1]=='.'||isdigit(str[i+1]))
cout<<str[++i];
}
//处理操作符
else
{
if(str[i]=='('||st.empty()||mp[str[i]]>mp[st.top()])
st.push(str[i]);
else if(str[i]==')')
{
while(st.top()!='(')
{
cout<<" "<<st.top();
st.pop();
}
st.pop();
}
else
{
//栈顶的优先级比该运算符大或等
while(!st.empty()&&mp[str[i]]<=mp[st.top()])
{
cout<<" "<<st.top();
st.pop();
}
st.push(str[i]);
}
}
}
while(!st.empty())
{
cout<<" "<<st.top();
st.pop();
}
return 0;
}
(未解决)表达式转换
最新推荐文章于 2025-03-31 17:10:15 发布

1291

被折叠的 条评论
为什么被折叠?



