【数据结构】中缀表达式的计算

中缀表达式的计算

  1. 初始化两个栈,数字栈放操作数,运算符栈放运算符(+ - * / ( ) )
  2. 遍历中缀表达式,数字直接入栈
  3. 如果是符号
  4. 符号栈为空或者str[i]是一个左括号,str[i]直接入栈
  5. str[i]是右括号,则计算到左括号的位置,并弹出左括号
  6. str[i]是运算符,则判断优先级,当str[i]大,则直接入栈;当栈顶的元素优先级大,则循环计算,直到符号栈顶元素优先级小于str[i].
  7. str[i]入符号栈

经过优化后的代码

#include <iostream>
#include <stack>
using namespace std;
stack<char> CS;
stack<double> NS;

void compute(){
   
    double num2=NS.top();
    NS.pop();

    double num1=NS.top();
    NS.pop();
    switch (CS.top())
    {
   
    case '+':
        NS.push(num1+num2);
        CS.pop();
        /* code */
 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值