对栈的应用与练习,方法低级很简单,仅仅是我个人的一个小练习:
把前缀表达式字符串一个一个放到栈Stack1里,再从取出Stack1中数字元素放到Stack2里,遇到符号则取出前两个元素做运算,再把运算后的表达式放入栈中。
计算时,动态创建数组,取出Stack1中的数字放数组中,遇到符号(第i位),将前两个位置上的取出进行运算再放到取出的最前面的数字的位置面上(第i-2位);重复到最后数组中只剩下一个元素,即最后的运算结果
上代码:
#include<iostream>
#include<string>
#include<stack>
using namespace std;
class Polish_prefix {
public:
stack<string> Stack1;
stack<string> Stack2;
int b;
void turn(stack<string> Stack1);
void compute(stack<string> Stack1,int b);
};
void Polish_prefix::turn(stack<string> Stack1) {
while (!Stack1.empty()) {
if (Stack1.top() == "+" || Stack1.top() == "-" || Stack1.top() == "*" || Stack1.top() == "/") {
string a, b, c;