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

本文介绍如何计算中缀表达式,通过初始化数字栈和运算符栈,按顺序处理表达式。遇到数字则入数字栈,遇到运算符时根据优先级规则与符号栈交互,优化后的代码提高了计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中缀表达式的计算

  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 */
        break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值