逆波兰

// 逆波兰表达式.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include
#include
#include
using namespace std;

bool IsOperator(const char* token) {
 return((token[0] == '+') || (token[0] == '-') || (token[0] == '*') || (token[0] == '/'));
}
//这里的是判断是不是那个操作数,这里用的是或者也就是说只要一个为真那么就会返回1\
则说明这是一个操作符号
int ReversePolishNotation(const char* str[], int size) {
 stack s;//建立一个栈
 int a, b;//定义两个整数作用是承接操作数
 const char* token;//定义一个字符常量
 for (int i = 0; i < size; i++)
 {
  token = str[i];
  if (!IsOperator(token)) {
   s.push(atoi(token));//这里判断不是操作符就压栈;
  }
  else
  {
   b = s.top();
   s.pop();
   a = s.top();
   s.pop();
   if (token[0] == '+')
    s.push(a + b);
   else if (token[0] == '-')
    s.push(a - b);
   else if (token[0] == '*')
    s.push(a * b);
   else if (token[0] == '/')
    s.push(a / b);
  }
 }
 return s.top();
}

你可能感兴趣的:(逆波兰)