栈的应用:逆波兰表达式
输入:逆波兰表达式。要求:1 .每个数字和符号之间用空格隔开。
2 .以#结尾,输出其结果。
输出:式子结果
代码如下(用的栈是刚刚自己写的哈,就在另外一篇博客里面):
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include "MyOwnStack.h"
using namespace std;
int main()
{
MyOwnStack <double> s;
char str[10];
double ans,d,e;
while(1){
cin>>str;
if('#' == str[0])
break;
switch(str[0]){
case '+':
d = s.Pop();
e = s.Pop();
ans = d+e;
break;
case '-':
d = s.Pop();
e = s.Pop();
ans = e-d;
break;
case '*':
d = s.Pop();
e = s.Pop();
ans = d*e;
break;
case '/':
d = s.Pop();
e = s.Pop();
ans = e/d;
break;
default:
ans = atof(str);
}
s.Push(ans);
}
cout<<s.Pop();
}