算法
后缀表达式的处理过程很简单,过程如下:扫描后缀表达式,凡遇操作数则将之压进堆栈,遇运算符则从堆栈中弹出两个操作数进行该运算,将运算结果压栈,然后继续扫描,直到后缀表达式被扫描完毕为止,此时栈底元素即为该后缀表达式的值。
C++ 代码
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char a[1010];
int stack[510];
int comp(char a[]) {
int i = 0, top = 0, x;
while (i <= strlen(a) - 2) {
switch(a[i]) {
case '+': stack[--top] += stack[top + 1]; break;
case '-': stack[--top] -= stack[top + 1]; break;
case '*': stack[--top] *= stack[top + 1]; break;
case '/': stack[--top] /= stack[top + 1]; break;
default: x = 0; while (a[i] != '.') x = x * 10 + a[i++] - '0';
stack[++top] = x; break;
}
i++;
}
return stack[top];
}
int main() {
gets(a);
cout << comp(a) << '\n';
return 0;
}