后缀表达式计算——栈的应用

来源:互联网 发布:dijkstra算法求解过程 编辑:程序博客网 时间:2024/05/16 08:39

“test.cpp”

<strong><span style="font-size:18px;">#include<iostream>using namespace std;#include<stack>#include<assert.h>enum OP{OP_NUM,OP_SYMBOL,ADD,SUB,MUL,DIV,};struct Cell{int _symbol;int _value;};void test(){//12 3 4 + * 6 - 8 2 / +Cell RPNArray[] = \{\{OP_NUM,12},\{OP_NUM,3},\{OP_NUM,4},\{OP_SYMBOL,ADD},\{OP_SYMBOL,MUL},\{OP_NUM,6},\{OP_SYMBOL,SUB},\{OP_NUM,8},\{OP_NUM,2},\{OP_SYMBOL,DIV},\{OP_SYMBOL,ADD},\};int size = sizeof(RPNArray)/sizeof(RPNArray[0]);stack<int> s;for(int i = 0;i < size;i++){if(RPNArray[i]._symbol == OP_NUM){s.push(RPNArray[i]._value);}else{int right = s.top();s.pop();int left = s.top();s.pop();switch(RPNArray[i]._value){case ADD:{s.push(left + right);}break;case SUB:{s.push(left - right);}break;case MUL:{s.push(left * right);}break;case DIV:{s.push(left / right);}break;default:assert(false);}}}cout<<" jieguo = "<<s.top()<<endl;}int main(){test();return 0;}</span></strong>


0 0
原创粉丝点击