You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript栈isEmpty()算法实现求助:无法正确判断空栈

栈isEmpty()算法实现问题

需求说明

需要实现栈的isEmpty()函数,满足以下要求:

  • 栈为空时返回true,包含元素时返回false
  • 执行后不能改变栈的原有状态
  • 仅允许使用栈的.pop()、.push()、.peek()三个方法

用户尝试了以下代码,但无法正确识别空栈:

function isEmpty(stack) {
if(stack!==''){
  return false
}else if(stack===''){
  return true
}
}

原代码问题分析

原代码错误地将栈对象与空字符串直接比较,栈是一个数据结构对象而非字符串,这种判断逻辑完全不符合栈的实际工作机制,因此无法正确判断栈是否为空。

正确实现方案

方案1:使用pop()+push()(兼容性更强)

这种方法通过临时取出栈顶元素,判断后再放回,确保栈的状态完全不变:

function isEmpty(stack) {
  const topElement = stack.pop();
  // 若取出的是undefined,说明栈为空
  if (topElement === undefined) {
    return true;
  }
  // 将元素放回栈,恢复原状态
  stack.push(topElement);
  return false;
}

方案2:使用peek()(简洁但需注意栈实现特性)

如果你的栈实现中,空栈调用.peek()会返回undefined而非抛出异常,可以直接用这个方法:

function isEmpty(stack) {
  return stack.peek() === undefined;
}

注意事项

  • 若栈的实现规定空栈调用.peek()会抛出错误,优先选择方案1,避免异常。
  • 两种方案都严格保证了栈的原有状态不被修改,符合需求。

内容的提问来源于stack exchange,提问作者ketchupenjoyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:01:44