给一个包含小数的中缀表达式 求出它的值 首先转换为后缀表达式然后利用stack求出值 转换规则: 如果字符为'(' push else if 字符为 ')' 出栈运算符直到遇到‘(' else if 字符为‘+’,’-‘,’*‘,’/‘ { if 栈为空或者上一个运算符的优先级小于当前运算符 pus ...
分类:
编程语言 时间:
2017-05-15 18:34:45
阅读次数:
266
前缀、中缀、后缀表达式1.定义所谓的前、中、后,是指表达式中运算符相对于运算对象的位置。中缀运算符位于运算对象中间,即是中缀表达式。如(1+2)*3-4最普遍的、最易被人脑理解的是中缀表达式。前缀运算符位于运算对象之前。即是前缀表达式。如-*+1234后缀运算符位于运算对象之后,即是后缀表达式。如1 ...
分类:
其他好文 时间:
2017-05-06 12:01:12
阅读次数:
248
代码提交到了task4分支里面。 最主要的修改就是增加了括号的生成和用中缀表达式计算结果,栈虽然以前在数据结构中学到过,但是并没有具体的使用过,所以还是当做新知识学了一遍。用栈实现之前,我用递归写了一遍,逻辑太复杂了,而且局限性很大,所以就用栈重新写了一遍。从逻辑上栈比递归方便得多,而且用着也不复杂 ...
分类:
其他好文 时间:
2017-05-04 21:50:00
阅读次数:
141
前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式。 而把中缀式按运算顺序加上括号就是:(2+((3+4)*5)) ...
分类:
其他好文 时间:
2017-05-01 19:02:31
阅读次数:
224
一、回顾二叉树的递归遍历 前序遍历:访问根结点-->前序遍历根结点的左子树-->前序遍历根结点的右子树。 中序遍历:中序遍历根结点的左子树-->访问根结点-->中序遍历根结点的右子树。 后序遍历:后序遍历根结点的左子树-->后序遍历根结点的右子树-->访问根结点。 二、二叉树递归遍历获得表达式 假设 ...
分类:
其他好文 时间:
2017-05-01 13:41:07
阅读次数:
354
算法: 中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元 ...
分类:
其他好文 时间:
2017-04-30 21:33:12
阅读次数:
206
这道题的关键是中缀表达式转后缀表达式。 定义一个符号栈和一个数字栈。怎么中缀转后缀,数据结构这本书上有。 这里简单说一下,从左往右扫描字符串,遇见数字就压入数字栈。 遇见符号的话, 1、如果是'(',直接入栈。 2、如果是')',挨个弹出栈顶元素,直到遇见'('停止,但要把'('弹出来。 3、其他符 ...
分类:
其他好文 时间:
2017-04-20 10:32:40
阅读次数:
119
描述 中缀表达式是一个通用的算术或逻辑公式表示方法,操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。后缀表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , ...
分类:
其他好文 时间:
2017-04-18 18:53:15
阅读次数:
150
(1)首先,需要分配2个栈,栈s1用于临时存储运算符(含一个结束符号),此运算符在栈内遵循越往栈顶优先级越高的原则;栈s2用于输入逆波兰式,为方便起见,栈s1需先放入一个优先级最低的运算符,在这里假定为'#'; (2)从中缀式的左端开始逐个读取字符x,逐序进行如下步骤: 1.若x是操作数,则分析出完 ...
分类:
编程语言 时间:
2017-04-15 19:01:56
阅读次数:
277
首先声明,这个代码不全是我写的,以至于个人认为一些函数比较反人类。。。不过不要在意这些细节啦。。。好了,敲黑板,讲重点了 首先是这道题的整体的思路 1.读取中缀表达式 2.对其进行遍历,一次读入一个字符,读到'\0',则停止读入。 3.对字符处理: 若是数字,直接输出 若是左括号,直接入栈 若是右括 ...
分类:
其他好文 时间:
2017-04-13 20:59:27
阅读次数:
269