//进制转化 voidBinaryConversion(int num, int transform){ char Letter[26]; for (int i = 0; i < 26; i++) Letter[i] = 'A' + i; stack<int> Binary;
//计算转化结构 while (num) { Binary.push(num % transform); num /= transform; }
//输出结果 int len = Binary.size(); for (int i = 0; i < len && !Binary.empty(); i++) { int p = Binary.top(); if (p < 10) cout << p; else cout << Letter[p - 10]; Binary.pop(); } }
int len = str.length(); for (int i = 0; i < len; i++) { if (str[i] == c) Matching.push(c); if (str[i] == c0) { if (Matching.empty()) returnfalse; else Matching.pop(); } } return Matching.empty(); }
运行结果
简单表达式求值
基本思想
扫描字符串,如果字符为数字,进数字栈;
当扫描到某一种类型的右括号时,出栈;
若字符串当前为的右括号而栈已经空,则右括号多于左括号;
为操作符,操作符栈为空时,操作符进栈;
为操作符,操作符栈非空时,栈顶操作符优先级小,操作符进栈;
为操作符,操作符栈非空时,栈顶操作符优先级大:
连续两次取数字栈(num1 ,num2)的数据出栈;
将num2和num1按操作符栈顶的运算法则运算;
得到的结果进数字栈,扫描的操作符进操作符栈;
扫描完后,若操作符栈非空,则重复一遍步骤四的计算方法。
辅助函数
优先级判断
1 2 3 4 5 6 7 8
//优先级判断 intpriori(char c){ if (c == '*' || c == '/') return2; if (c == '+' || c == '-') return1; return0; }
判断是数字还是操作符
1 2 3 4 5 6 7 8
/* * 判断是数字还是操作符 * 数字返回:true * 操作符返回:false */ boolis_num(char c){ return !(c == '+' || c == '-' || c == '*' || c == '/'); }