#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <stack>
#define maxSize 100
/*
* Created by HarvestWu on 2018/6/1.
*/
using namespace std;
int main()
{
stack<char> stk;//存放操作符
char str[maxSize];//存放中缀表达式
char exp[maxSize];//存放后缀表达式
int count=0;//exp数组下标
gets(str);
for (int i = 0; i < strlen(str); ++i)
{
switch (str[i])
{
case '(':
stk.push(str[i]);
break;
case ')':
while (stk.top()!='(')
{
exp[count++]=stk.top();
stk.pop();
}
stk.pop();
break;
case '+':
case '-':
while (!stk.empty()&&stk.top()!='(')
{
exp[count++]=stk.top();
stk.pop();
}
stk.push(str[i]);
break;
case '*':
case '/':
while (stk.top()=='*'||stk.top()=='/')
{
exp[count++]=stk.top();
stk.pop();
}
stk.push(str[i]);
break;
default:
exp[count++]=str[i];//非操作符
break;
}
}
while (!stk.empty())//将栈内剩余元素全部出栈
{
exp[count++]=stk.top();
stk.pop();
}
for (int j = 0; j < strlen(exp); ++j) {
printf("%c",exp[j]);
}
}
C++ 将中缀表达式转为后缀表达式
最新推荐文章于 2024-03-10 15:41:21 发布