📄 中缀到后缀.cpp
字号:
#include<iostream>
#include<string>
#include<stack>
using std::stack;
using std::string;
using std::cout;
using std::cin;
using std::endl;
string zzs;
int index=0;
string sta;
string op="+-*/()";
int priorty(char a)
{
if(a=='+'||a=='-')return 3;
if(a=='*'||a=='/')return 4;
if(a=='(')return 5;
if(a==')')return 1;
return 0;
}
void f(char a)
{
if(a==')')
{
index++;
return ;
}
if(a=='(')
{
while(zzs[index]!=')')
{
index++;
if(op.find(zzs[index])!=string::npos)
f(zzs[index]);
else
sta+=zzs[index];
}
}
else
{
index++;
while(index<zzs.length())
{
if(op.find(zzs[index])!=string::npos)
{
if(priorty(a)>=priorty(zzs[index]))break;
f(zzs[index]);
}
else
{
sta+=zzs[index];
index++;
}
}
sta+=a;
}
}
int main()
{
cout<<"请输入中缀式:"<<endl;
cin>>zzs;
while(index<zzs.length())
{
if(op.find(zzs[index])!=string::npos)
f(zzs[index]);
else
{
sta+=zzs[index];
index++;
}
}
cout<<sta<<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -