逆波兰表达式(后缀表达式的求解)

来源:互联网 发布:des算法例题 编辑:程序博客网 时间:2024/05/20 10:11

题目:逆波兰表达式(后缀表达式的求解)

<span style="font-size:18px;">#include<iostream>#include<stack>using namespace std;enum type{           OP_NUM,           OP_SYMBLE,           ADD,           SUB,           MUL,           DIV};struct Cell{           type _type;           int _value;};int RPN_ARRAY(Cell Array[], size_t size ){           size_t i = 0;           stack<int > s;           for (i = 0; i< size ; i++)          {                    if (Array [i]._type == OP_NUM)                   {                             s.push( Array[i]._value);                   }                    else                   {                              int right = s.top();                             s.pop();                              int left = s.top();                             s.pop();                              switch (Array [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:                                       break;                             }                   }          }           return s.top();}void funtest(){           Cell Array[] =          {                   { OP_NUM, 12 },                   { OP_NUM, 3 },                   { OP_NUM, 4 },                   { OP_SYMBLE, ADD },                   { OP_SYMBLE, MUL },                   { OP_NUM, 6 },                   { OP_SYMBLE, SUB },                   { OP_NUM, 8 },                   { OP_NUM, 2 },                   { OP_SYMBLE, DIV },                   { OP_SYMBLE, ADD }          };           size_t size = sizeof (Array) / sizeof(Array[0]);           int ret = RPN_ARRAY(Array, size);          cout << ret << endl;}int main(){          funtest();          getchar();           return 0;}</span>


0 0
原创粉丝点击