美文网首页
数据结构-栈的应用-表达式求值

数据结构-栈的应用-表达式求值

作者: Jaling | 来源:发表于2022-01-25 15:34 被阅读0次

问题描述

输入包含+、-、*、/、圆括号和正整数组成的中缀表达式,以“@”作为表达式结束符,计算该表达式的运算结果。

算法实现

思路:建立两个栈,一个存放运算符,一个存放运算数。依次读入每个字符串,如果为数字,则直接入栈;如果为运算符,则与字符串栈顶字符比较优先级:若栈顶字符<当前字符,则当前字符入栈并读下一字符,若栈顶字符=当前字符,则仅栈顶字符出栈并读下一字符,若栈顶字符>当前字符,则栈顶字符出栈且运算数栈出两个数字进行计算,计算结果入运算数栈(不读下一字符)。最后当运算符栈为空且运算数栈仅剩一个数字时,该数字为表达式值。

表达式求值-以@为输入结束符

运算符优先级采用二维数组存储,采用字符‘>’,‘<’,‘=’标示。二维数组初始化方法

运算符优先级比较函数 运算结果计算函数

思考1:若以回车符结束与上述有何不同?

将@进栈、运算符优先级等处换成10或\n,其他代码保持不变。

回车符替换结束符

思考2:如何实现处理10以上数字的运算?

遇到一个数字字符,则循环读取数字字符,直到下一个字符为运算符为止。

读10以外的运算数

相关文章

  • 数据结构入门(三)栈的应用

      在之前的两篇文章——数据结构入门(一)栈的实现和数据结构入门(二)栈的应用之数学表达式求值中,笔者分别介绍了“...

  • 【数据结构】【C#】011-栈的应用:📟表达式求值

    C#数据结构:栈的应用:表达式求值 后缀表达式 在我们日常生活中所见表达式都是中缀表达式,如 “5*(3+7)-4...

  • 表达式求值

    表达式求值时对数据结构中栈结构的灵活应用,对于一个表达式而言,它由操作数和运算符组合而成,我们现实中常见的表达式:...

  • 栈: 顺序栈 栈的应用:函数调用栈,表达式求值,括号匹配,浏览器的前进后退。相关code:https://gith...

  • 数据结构复习

    第三章 栈和队列 一 栈 栈的类型 顺序栈 链式栈 双向栈 栈的应用 数制转换 行编辑程序 迷宫求解 表达式求值:...

  • 数据结构-栈的应用-表达式求值

    问题描述 输入包含+、-、*、/、圆括号和正整数组成的中缀表达式,以“@”作为表达式结束符,计算该表达式的运算结果...

  • 4 : 栈

    1:什么是栈 2:栈的存在意义 3:如何实现一个“栈”? 4:复杂度 5:栈在函数调用中的应用 6:栈在表达式求值...

  • 大话数据结构 - 栈

    代码GitHub地址 栈的分类 栈是特殊的线性表 栈的典型应用递归,四则运算表达式求值。 栈的分类有两种: 静态栈...

  • 数据结构 第5节 栈 Stack

    一、静态栈:数组实现 二、动态栈:链表实现 三、应用: 生产者消费者 函数调用 中断 算术表达式求值 内存分配 缓...

  • 20. 有效的括号

    题目 解析 这道题特别有意思,解法和Dijkstra双栈算法表达式求值类似,这题也是一个栈的应用。以字符串( { ...

网友评论

      本文标题:数据结构-栈的应用-表达式求值

      本文链接:https://www.haomeiwen.com/subject/kwpwhrtx.html