中缀表达式转后缀表达式
2013-02-25 13:43
162 查看
void InFixToPostFix(char* aSource)
{
if (!aSource)
{
return;
}
int len =
(int)strlen(aSource);
char *a =
aSource;//"1+2*3+(4*5+6)*7";
STACKOpinit(len);
for (int i =
0;i < len;++i)
{
if (a[i] == '(')
{
STACKOppush(a[i]);
}
if (a[i] == ')')
{
char operator = STACKOppop();
while (operator !=
'(')
{
printf("%c",operator);
operator =
STACKOppop();
}
continue;
}
else if (a[i] ==
'+'||a[i]=='*')
{
Grade grade = None;
if (a[i] == '+')
{
grade =
AddAndMinus;
}
else if (a[i] ==
'*')
{
grade =
MulitAndDiv;
}
Grade gradeStack =
None;
Operator operator;
do {
operator =
STACKOpView();
if ((operator == '\0')||(operator ==
'('))
{
gradeStack =
None;
}
if (operator == '+')
{
gradeStack =
AddAndMinus;
}
else if (operator ==
'*')
{
gradeStack =
MulitAndDiv;
}
if (grade <= gradeStack)
{
printf("%c",STACKOppop());
}
}
while ((grade <= gradeStack)&&(gradeStack !=
None));
STACKOppush(a[i]);
}
if ((a[i] >= '0')&&(a[i] <=
'9'))
{
printf("%c",a[i]);
}
}
printf("%c",STACKOppop());
printf("%c",STACKOppop());
}
{
if (!aSource)
{
return;
}
int len =
(int)strlen(aSource);
char *a =
aSource;//"1+2*3+(4*5+6)*7";
STACKOpinit(len);
for (int i =
0;i < len;++i)
{
if (a[i] == '(')
{
STACKOppush(a[i]);
}
if (a[i] == ')')
{
char operator = STACKOppop();
while (operator !=
'(')
{
printf("%c",operator);
operator =
STACKOppop();
}
continue;
}
else if (a[i] ==
'+'||a[i]=='*')
{
Grade grade = None;
if (a[i] == '+')
{
grade =
AddAndMinus;
}
else if (a[i] ==
'*')
{
grade =
MulitAndDiv;
}
Grade gradeStack =
None;
Operator operator;
do {
operator =
STACKOpView();
if ((operator == '\0')||(operator ==
'('))
{
gradeStack =
None;
}
if (operator == '+')
{
gradeStack =
AddAndMinus;
}
else if (operator ==
'*')
{
gradeStack =
MulitAndDiv;
}
if (grade <= gradeStack)
{
printf("%c",STACKOppop());
}
}
while ((grade <= gradeStack)&&(gradeStack !=
None));
STACKOppush(a[i]);
}
if ((a[i] >= '0')&&(a[i] <=
'9'))
{
printf("%c",a[i]);
}
}
printf("%c",STACKOppop());
printf("%c",STACKOppop());
}
相关文章推荐
- codevs 3066 中缀表达式转后缀表达式
- 中缀表达式到后缀表达式的转换
- C语言实现括号匹配,中缀表达式转后缀表达式并计算的算法
- 中缀表达式转后缀表达式
- C++数据结构与STL--栈的应用--中缀表达式转后缀表达式
- 中缀表达式转换成前缀表达式和后缀表达式的极其简单方法
- 中缀表达式转后缀表达式并求值
- 课程设计 栈之 后缀表达式求值 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式并输出计算结果
- 中缀表达式生成二叉树并利用后缀表达式进行求值运算
- Java 中缀表达式转后缀表达式 + 中/后缀表达式计算
- 中缀表达式转换为后缀表达式
- 中缀表达式转换为后缀表达式
- 中缀表达式转后缀表达式(逆波兰表达式)
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式 javascript版
- 逆波兰式(中缀表达式转成后缀表达式)
- 中缀表达式变成等价的后缀表达式的算法
- 中缀表达式转后缀表达式的实现
- 利用栈将中缀表达式转换成后缀表达式