将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表达式也称做后缀式。逆波兰式的特点在于运算对象顺序不变,运算符号位置反映运算顺序。采用逆波兰式可以很好的表示简单算术表达式,其优点在于易于计算机处理表达式。(逆波兰式不需要使用括号)
本份代码出自:http://wenku.baidu.com/view/23a5b73031126edb6f1a10aa.html
本份代码需要两个栈。一个是符号栈,一个是数字栈。
输入中序表达式如9+(3-1)*3+10/2#
计算过程
#include<stdio.h>
#include<math.h>
#define max 100
char ex[max]; /*存储后序表达式*/
/*函数功能:将中序表达式转化为后序表达式*/
void trans() {
char str[max]; /*表达式字符串*/
char stack[max]; /*运算符栈*/
char ch; /*当前字符*/
int sum, i, j, t, top = 0; /*sum用来统计字符串的长度*/
/*t是数字栈栈顶指针*/
/*top是数字栈栈顶指针*/
printf("*****************************************\n");
printf("*输入一个求值的表达式,以#结束。*\n");
printf("******************************************\n");
printf("算数表达式:");
i = 0;
/*这个循环语句,获取一个用户输入的合法的表达式*/
do {
i++;
scanf(