完美的中缀表达式求值代码,适合学习数据结构的人参考
2020-11-07 21:18:46 4KB C语言 表达式求值 数据结构
1
利用栈实现算术表达式的求值,表达式中可包含加+、减(负) -、乘*、除/、 乘方^、括号( )运算符,操作数可以为浮点数。 可采用直接求中缀表达式的方法, 也可采用先转换成后缀表达式后再求值的方法(参看课件) 。 实现时需注意如下: ( 1)带小数点的数值生成 ( 理解整数数值的生成,小数部分的处理与之类似)。 ( 2)考虑负号的情况。负号与减号形式上一样,如何区分? • 输入的表达式串中第 1 个字符是’-’ – 可断定此’-’是负号 • 其余的’-’ – 若紧接在’(’之后的’-’可断定是负号 ( 3)负号的处理 • 方法 1:若已断定是负号,可先压入数值 0 进入操作数栈,如此,可 将负号看作减号。 • 方法 2: 若已断定是负号,则紧接其后的数字字符转换成数值后,要 将其对应的相反数(负数)压入操作数栈
2020-10-27 22:34:09 3KB 表示求值
1
数据结构 栈 表达式求值数据结构 栈 表达式求值数据结构 栈 表达式求值
2020-03-31 14:08:26 159KB 表达式求值
1
大一学习了用C语言实现的表达式求值,就是用C语言写的一个计算器,包括+-*/()等运算,也许你会觉得很简单,但是我花了很长时间才弄明白,其中用到了栈、队列等算法。
2020-01-03 11:45:09 5KB 等式求值
1
表达式求值C语言实现《数据结构》课程设计报告 很详细的设计报告,可以参考。
2020-01-03 11:43:27 19KB 表达式求值 C语言
1
实验题目: 基于栈的算术表达式求值算法 实验环境: 学习完了数据结构第三章内容栈和队列 实验目的:    1.掌握栈的定义及实现;    2.掌握利用栈求解算术表达式的方法。 实验内容:    通过修改完善教材中的算法3.1-3.4,利用栈来实现算术表达式求值的算法。对算法中调用的几个函数要给出其实现过程:    (1) 函数In(c):判断c是否为运算符;    (2) 函数Precede(t1,t2):判断运算符t1和t2的优先级;  (3) 函数Operate(a,theta,b):对a和b进行二元运算theta。 程序运行时,输入合法的算术表达式(中间值及最终结果要在0~9之间,可以包括加减乘除和括号),便可输出相应的计算结果。
2020-01-03 11:37:43 81KB 表达式求值
1
问题描述:以字符序列的形式从终端输入语法正确的、不含变量的整数算术表达式,编写程序求出该表达式的后缀表达式;计算最后的结果。 基本要求: 1、 表达式中至少包含加、减、乘、除四种基本运算 2、 表达式中括号的层次至少为2层 3、 能够判断算术表达式正确与否 4、 对于错误表达式给出提示 5、 输出后缀表达式 6、 计算结果
2020-01-03 11:36:44 155KB 算术表达式
1
代码可靠完整,个人手写实现,包括小数计算,下面是测试用例: //10*8^2+16.3+5*(5.2*5+3.01)/4-(-10)+0.1000060+4.00416-40 = 666.666666 //100+(-100)-(-10^2) = 100 //(((2016-2017+(((2015-2014)))))) = 0 //-1+(((((((((1^0))))))))+100^2 = 0
2020-01-03 11:35:01 30KB 算术表达式
1
这是一个运行于vs2015的项目,代码也就200+行,实现的功能有基础的四则运算以及math里面cos,sin,pow函数的,有这几个函数为样本添加其他函数也很简单,代码实现简单,中缀转后缀,只用了一个栈,附加提醒,若是使用函数,一定要加括号,如pow(1+2,sin(3+4))这样的可行。
2020-01-03 11:33:46 2.14MB c++ mid_to_suffi
1
一、问题描述 在控制台下实现一个对算术表达式求值的模拟程序。 二、基本要求 该演示程序具有如下基本功能: (1) 表达式输入,以字符序列的形式从终端输入一个语法正确的数值表达式(float型),且表达式中只含有+、-、*、/、( 、)6 种运算符,输入格式如下: …… 例如表达式: 100+(15/3)*2 输入格式为: 100+(15/3)*2 注意: 输入的表达式中间不含空格。 (2) 表达式结果的输出,输出形式为: = 例如表达式: 100+(15/3)*2 输出形式为: 100+(15/3)*2 = 110 注意: 此处的输出结果为整个表达式的数值结果。 (3) 数据合法性检验 主要是针对原表达式中除数为 0 的情况。 三、界面效果 表达式求值模拟程序 功能菜单: ============== [1] 输入表达式并求值 [0] 退出 ============== 请输入你的选择 (0~1):1 请输入一个表达式 : 100+(15/3)*2 计算结果如下: 100+(15/3)*2 = 110 请输入你的选择 (0~1):0 四、测试数据 (1) 8 = (2) 1+2+3+4 = (3) 88-1*5 = (4) 1024/4*8 = (5) 1024/(4*8) = (6) (20+2)*(6/2) = (7) 3-3-3 = (8) 80/(9-9) = (9) (6+2*(3+6*(6+6)) = (10) (((6+6)*6+3)*2+6)*2 = 五、实现提示 (1) 设置运算符栈和操作数栈辅助分析算符优先关系; (2) 在读入字符序列时,完成运算符和操作数的处理,以及相应运算; (3) 在识别处运算数的同时,要将其字符序列形式转化成 float 型数据形式; (4) 输入的字符序列中,操作数不一定是一位数,可能是多位数,如 16+32 ; (5) 使用 Lab3-1 实现的栈的 ADT 基本操作完成本次作业 ; (6) 在程序中会用到两类栈:操作数栈和运算符栈,分别为 float 型数据和字符型数据, 思考在同一个程序中如何处理两类不同的数据类型? (7) 算符之间的优先关系参考课本 P53 页表 3.1 。
2020-01-03 11:24:15 4KB 表达式求值 数据结构
1