首页 > 代码库 > 表达式计算
表达式计算
波兰式,操作符放在操作数前。
逆波兰式,操作符放在操作数后。
中序的话,用两个栈,一个存操作符, 一个存操作数,根据操作符优先级来操作。为了处理边界情况,在操作符的栈底和栈顶都放了一个"#"。
伪代码如下:
1 stack<char> ops; 2 stack<int> nums; 3 ops.push(‘#‘); 4 5 for (; ops.top() != ‘#‘ || (current != ‘#‘); current = readNext()) { 6 if (!isOperator(current)) { 7 nums.push(current); 8 } else if (current > ops.top()) { 9 ops.push(current);10 } else if (current == ops.top()) { // if "()"11 ops.pop();12 } else {13 int n1 = nums.top(); nums.pop();14 int n2 = nums.top(); nums.pop();15 nums.push(operate(n1, n2, ops.top());16 ops.pop();17 }18 }19 20 return nums.top();
表达式计算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。