**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。
这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
17小时前就关门了。
Improve this question
//2
function Stack(){
this.dataStore=[];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
this.length = length;
this.clear = clear;
}
function push(element){
this.dataStore[this.top++] = element;
}
function pop(){
this.dataStore[--this.top];
}
function peek(){
return this.dataStore[this.top-1];
}
function length(){
return this.top;
}
function clear(){
this.top = 0;
}
var input = "100/5";
var operands = new Stack();
var operators = new Stack();
var operandsFlip = new Stack();
var postfixStr = "";
function convertInfixToPostfix(input) {
var numStr = "";
for (var i = 0; i < input.length; i++) {
var curr = input[i];
if (curr === "+" || curr === "-" || curr === "*" || curr === "/") {
operators.push(curr);
operands.push(numStr);
numStr = "";
} else {
numStr += curr;
}
}
operands.push(numStr);
while (operands.length() > 0) {
operandsFlip.push(operands.pop());
}
var operand1 = operandsFlip.pop();
var operand2 = operandsFlip.pop();
var operator = operators.pop();
console.log("Postfix expression: " + operand1 + " " + operand2 + " " + operator);
var result = eval(operand1 + operator + operand2);
console.log("Posfix evaluated: " + result);
}
convertInfixToPostfix(input);
后置运算式评估工具会使用下列形式的算术运算式:op1 op2运算符使用两个堆栈(一个用于操作数,另一个用于运算符)设计并实现一个JavaScript函数,该函数将中缀表达式转换为后缀表达式,然后使用堆栈计算表达式。
输出如下:Postfix expression: undefined undefined undefined Posfix evaluated: NaN
1条答案
按热度按时间a1o7rhls1#
pop()
函数缺少return
关键字,因此始终返回undefined
。