最近刚刚自学了一点点数据结构和STL,刚好写个简易的计算器 O(∩_∩)O
首先了解了一下逆波兰表达式
《大话数据结构》一书中阐释得较为易懂
1 #include<iostream> 2 #include<ctype.h>//isdigit() 3 #include <cstring> 4 #include<stack> 5 using namespace std; 6 7 stack<char> opCh; 8 stack<long long> opNum; 9 inline long long Calculate() 10 { 11 long long b = opNum.top(); 12 opNum.pop(); 13 long long a = opNum.top(); 14 opNum.pop(); 15 char operate = opCh.top(); 16 opCh.pop(); 17 18 switch (operate) 19 { 20 case '+': 21 return a + b; 22 case '-': 23 return a - b; 24 case '*': 25 return a * b; 26 case '/': 27 return a / b; 28 } 29 } 30 inline long long Ojrank(char ch) 31 { 32 switch (ch) 33 { 34 case '(': 35 return 0; 36 case '+': 37 case '-': 38 return 1; 39 case '*': 40 case '/': 41 return 2; 42 case ')': 43 return 3; 44 } 45 } 46 int main() 47 { 48 cout << "计算器1.0[仅支持整数的简单运算]" << endl; 49 cout << "请输入计算表达式:" << endl; 50 string expression; 51 cin >> expression; 52 int len = expression.length(); 53 54 long long topChRank, currentChRank; 55 long long i = 0; 56 long long number; 57 while (expression[i] != '=' && expression[i] != '