我的代码有什么问题?我想实现一个JavaScript堆栈函数,但它导致了NaN [closed]

siv3szwd  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(74)

**已关闭。**此问题为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

a1o7rhls

a1o7rhls1#

pop()函数缺少return关键字,因此始终返回undefined

function pop(){
    return this.dataStore[--this.top];
}

相关问题