从左到右依次检查每个字符
2.如果该字符是左括号(,将其加入堆栈
3.如果该字符是右括号),开始出栈,将栈中元素依次加入到输出队列中,直到碰到左括号'('。左括号本身不加入队列。如果栈中没有左括号,返回匹配错误。
4.如果该字符是非括号运算符,将该字符的优先级和栈顶元素作比较。如果优先级高于栈顶元素则入栈,否则添加到输出队列中。
表达式全部检查完毕后,将栈中所有剩余元素加入到输出队列中。如果栈中含有括号,返回匹配错误。
最后得到的输出队列就是后缀表达式。
#include<stdio.h>main()
{double a,b,s
char ch
printf(":输入要计算的式子,如:10+20\n")
scanf("%lf%c%lf",&a,&ch,&b)
if(ch=='+')
s=a+b
else
if(ch=='-')
s=a-b
else
if(ch=='*')
s=a*b
else
s=a/b
printf("(%lf)%c(%lf)=%lf\n",a,ch,b,s)
}