C++的表达式求值用栈实现表达式求值,请问,出栈的是些什么数据?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 17:29:06
C++的表达式求值用栈实现表达式求值,请问,出栈的是些什么数据?

C++的表达式求值用栈实现表达式求值,请问,出栈的是些什么数据?
C++的表达式求值
用栈实现表达式求值,请问,出栈的是些什么数据?

C++的表达式求值用栈实现表达式求值,请问,出栈的是些什么数据?
1、先读入一行表达式,用一个字符数组line[]存储
2、依次读入每个字符并进行处理同是进行表达式判错:
1.遇数字,则继续判断下一个字符,直到下一个字符不是数字且不是小数点,若该数含有两个小以上数点,则表示输入错误.否则即可保证该操作数是完整的浮点数,然后将该数入操作数栈.
若数字不是表达式的最后一位,且数字后面跟的不是“+、-、*、/、^、)”,则为表达式错误
2.遇运算符,则分两种情况:
1、若运算符为负号(该运算符为符号的情况有两种:一为负号在最开头,一为符号前面是“(” ),则先将0入操作数栈,然后再将负号入运算符栈.
2、该运算符不是负号则与运算符栈的栈顶元素比:
(1) 若栈顶元素优先级低,新输入的运算符入栈.
(2) 若栈顶元素优先级高,
1) 从符号栈弹出一个运算符,
2) 从对象栈弹出一个/两个操作数,
3) 运算结果压入对象栈.
(3) 优先级相等,则栈顶元素出栈,与输入元素对消.
若“(、+、-、*、/、^”放在表达式最后面,则表达式错误
若“+、-、*、/、^”后面跟的不是数字或者变量,表达式错误
3、遇字母变量,则继续判断下一个字符,直到下一个字符不是字母变量,即可保证该变量是完整的,然后输出“请输入变量的值”,再将输入的变量值入操作数栈.
若变量后面跟的不是“+、-、*、/、^、)”,则表达式错误
4、若所读的该字符不是上述情况中的一种,则表达式错误
3、当将所有的字符都读一遍之后,若表达式正确的话,则必然不含有“(”或者“)”.即若运算符栈中含有“(”或者“)”,则表达式必错误.再考虑表达式正确的情况:运算符栈可能为空,则操作符栈中必剩下一个操作数,即最后的结果.若不为空,则留在运算符栈中的运算符的优先级别从栈顶至栈底依次递减.故可从运算符栈顶开始弹出一个运算符,从操作数栈中弹出两个操作数进行运算,再将运算结果入操作数栈,一直循环至运算符栈为空.此时操作数栈剩下的唯一一个操作数就是运算结果.

C++的表达式求值用栈实现表达式求值,请问,出栈的是些什么数据? 表达式求值objective-c 利用栈表达式求值 算术表达式求值 高手,求助!问题描述:设计一个程序,演示用栈实现算术表达式求值的过程 基本要求: (1)以字符形式输入语法正确,不含变量的常规实数表达式; (2)判断表达式是否合法 求《数据结构》课程设计(题目:算术表达式求值)系统应具备的功能:(1)设计算术表达式的存储结构(2)实现前缀表达式、中缀表达式和后缀表达式的求值 (3)输出求值结果希望 表达式求值中缀表达式转换为后缀表达式,并求值,(C语言) c#算术表达式 求值 matlab表达式编写求值 后缀表达式求值 c++ 后缀表达式求值算法 C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则. 算术表达式求值 【问题描述】 表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子.设计一个程序,演示符优先法对算术表达式求值的过程【基本要求】以字符序列 我用C语言写一个关于算术表达式求值的程序.(用数据结构中的栈知识) C语言 表达式求值 2/5+3﹡(6-4)利用栈的定义怎么表示 表达式求值的实验报告博客 算术表达式能实现前缀后缀和中缀的表达是求值设计表达式的存储结构能求出结果 用C语言数据结构算法编写程序!算术表达式求值:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式,利用给定的算符优先关系,实现对算术四则混合运算表达式的求值,并演示 算术表达式求值 C语言算术表达式求值(1)用户可通过键盘输入四则运算的表达式(2)判断表达式是否正确(3)对正确的表达式,计算该表达式的值