复习经典算法,原算法:数据结构(用面向对象方法与c++描述) 112页 。
效果:
演示@google code
代码:
<script>
var postfix=function(){
//栈内优先数
var isp={
'(':1,
'^':7,
'*':5,
'/':5,
'%':5,
'+':3,
'-':3,
')':8
};
//栈外优先数
var icp={
'(':8,
'^':6,
'*':4,
'/':4,
'%':4,
'+':2,
'-':2,
')':1
};
//左括号栈外优先级最高,它一来立即进栈,其栈内优先级最低,便于括号内操作符进栈,其他操作符进栈后优先级都升一,
//这样可体现出中缀表达式相同优先级的操作符从左向右计算的要求,让位于栈顶的操作符先退栈并输出。
return function(exp){
//后缀表达式
var buffer=[];
//操作符栈
var stack=[];
//当前中缀表达式扫描字符
var el;
//当前操作符栈栈顶元素
var top;
for(var i=0,l=exp.length;i<l;i++) {
el=exp.charAt(i);
//数字元素
if(!isp[el]) {
buffer.push(el);
continue;
}
if(stack.length===0) {
stack.push(el);
continue;
}
top=stack[stack.length-1];
while(isp[top]>=icp[el]) {
// ( ) 匹配
if(isp[top] == icp[el]) {
stack.pop();
break;
}
buffer.push(stack.pop());
top=stack[stack.length-1];
}
//不是 ()匹配 ,当前字符如栈
if(isp[top]!=icp[el]) {
stack.push(el);
}
}
//栈内操作符都出来吧,没数字了
while(stack.length) {
buffer.push(stack.pop());
}
return buffer.join('');
};
}();
//测试
//abc*de+f^*+h+
alert(postfix("a+b*c*(d+e)^f+h"));
</script>
- 大小: 3.3 KB
分享到:
相关推荐
利用C语言实现中缀表达式转化为后缀表达式!!利用栈。
(1) 从键盘或文件读入一个合法的算术表达式,输出相应的后缀表达式。后缀表达式中,数据与数据之间加分隔符; (2) 输出正确的计算结果,保留两位小数点; (3) 考虑算法的健壮性,当表达式错误时,要给出错误...
通过创建后缀树来实现输入的表达式是否是判别后缀表达式,并将正确的后缀表达式转化为其相应的前缀表达式
将中缀表达式转换为二叉树、后序遍历二叉树转为后缀表达式、计算后缀表达式
2) 掌握栈的典型应用——后缀表达式求值。 2. 实验内容 1) 用键盘输入一个整数后缀表达式(操作数的范围是0~9,运算符只含(、(、*、/,而 且中间不可以有空格),使用循环程序从左向右读入表达式; 2) 如果读入的...
自定义栈,中缀表达式转换为后缀表达式并求值,三个抽象数据类型定义(1.class stack 2.class Middle_expressionToPost_expression 3.class Post_expression_value)
使用键盘输入表达式,计算表达式的值并输出;将表达式转化成后缀表达式输出,利用后缀表达式求表达式的值并输出。
实现数据结构中后缀表达式值的c语言完整可运行代码。
编译系统对中缀表达式的处理方法是先把它转换为后后缀表达式.在后缀表达式中,运算符位于两个操作数的后面,并且没有括号,其运算符的次序就是其执行运算的次序。后缀表达式计算过程的规则非常简单:从左到右依次扫描,...
中缀表达式转化为后缀表达式中缀表达式转化为后缀表达式
中缀表达式转化成后缀表达式并计算C++实现
用户输入中缀表达式,程序输出后缀表达式并输出计算结果
将由数字和四则运算符组成的后缀表达式变换为中缀表达式。输入的后缀表达式包含的运算符不超过15个。要求转换后的中缀表达式中不应出现不必要的括号。例如,整个表达式两端的括号要省略,不影响原计算顺序的括号要...
后缀表达式的计算 栈的各个步骤 进站出站
中缀表达式转换为后缀表达式,用堆栈实现!!!!!!!!
后缀表达式的计算,输入一个后缀表达式利用栈来计算结果
数据结构算法:中缀表达式转化为后缀表达式.doc 详细的论述和代码!
用数据结构栈实现后缀表达式求值的问题 输入一个后缀表达式 可计算出它的值
基础课程里的题目,后缀表达式转化为前缀,单纯做后缀表达式运算的也可以参考
中缀表达式转换为后缀表达式,删除堆栈元素中缀表达式转换为后缀表达式,删除堆栈元素中缀表达式转换为后缀表达式,删除堆栈元素中缀表达式转换为后缀表达式,删除堆栈元素中缀表达式转换为后缀表达式,删除堆栈元素...