1 Star 1 Fork 0

Qzx/data-structure-course

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
Qzx- Qzx MD_CPP 8d34d91 2年前
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

3.可含括号的算术表达式的求值

Code on gitee

笔记

语言:C++.

简介

文件名: calculator.h

这是一个可以计算字符串类型四则运算的函数。它将输入的字符串转换为一个中缀表达式并计算结果。

使用方法

在代码中调用该函数,传入一个NumberType类型的变量和一个代表需要计算的字符串类型四则运算表达式的string类型变量。 如果输入合法,则操作数栈顶为结果,计算结果会存入传入的NumberType类型变量中。

实现过程

该函数的实现过程可以分为以下几个步骤:

步骤 1:初始化

在该步骤中,程序会初始化运算符优先级列表和待处理数组。同时,程序会将左括号入栈,避免后续处理中栈为空的情况。

步骤 2:逐一处理字符串中的字符

在该步骤中,程序会逐一处理字符串中的字符。

  • 如果是数字字符,则程序会将整个数字部分录入操作数栈中。

  • 如果是左括号,则直接入运算符栈中。

  • 如果是右括号,则将栈中的运算符和操作数出栈,直到遇到左括号,并将化简后的结果入操作数栈中。

  • 如果是运算符,则判断其与栈顶运算符的优先级,如果更高则入栈,否则将栈中的运算符和操作数出栈,直到栈顶运算符优先级低于当前运算符,并将化简后的结果入操作数栈中。

  • 如果读到非法字符,则返回错误信息。

步骤 3:计算最终结果

在该步骤中,程序会计算操作数栈中最终的结果。

  • 如果操作数栈中只有一个元素,则计算结果成功,否则说明输入不合法。

题面

【问题描述】

请使用栈实现可含括号的算术表达式(加、减、乘、除)的求值(注意:运算数可为十进制的整数,该整数可为负数)

【输入形式】

输入一个字符串,以'#'结束

【输出形式】

如果输入正确,则输出一个整型数;否则输出"error!"

【样例输入】

123+45*(67-7)-8/9

【样例输出】

2823
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/Qzx3337/data-structure-course.git
git@gitee.com:Qzx3337/data-structure-course.git
Qzx3337
data-structure-course
data-structure-course
master

搜索帮助