栈和队列

Categories:  Share

队列 queue 是先进先出 栈是 stack 后进先出

JavaScript 中的堆栈

JS 可以用数组来模拟堆栈,主要是因为数组提供了比较全的方法,既可以操作顶部,也可以操作底部。 队列是先进先出的,出队列的话可以用数组的 shift 方法来出队列 栈是先进后出的,可以用数组的 pop 方法来出栈

栈(stack)

后进先出,新添加的元素或待删除的元素保存在栈顶(即后进入的元素),另一端为栈底(即先进入的元素)。在栈中,新元素总是靠近栈顶,旧元素总是靠近栈底。

class Stack {

  constructor() {
    this.items = []
  }

  // 向栈顶新加元素
  push(element) {
    this.items.push(element)
  }

  // 从栈顶弹出元素,返回的是栈顶的元素
  pop() {
    return this.items.pop()
  }

  // 返回栈顶的元素,并不弹出元素
  peek() {
    return this.items[this.items.length - 1]
  }

  // 判断栈是否为空
  isEmpty() {
    return this.items.length === 0
  }

  // 返回栈的长度
  size() {
    return this.items.length
  }

  // 清空栈
  clear() {
    this.items = []
  }

  // 打印栈内所有的元素
  print() {
    console.log(this.items.toString())
  }
}


// 验证
const stack = new Stack()
console.log(stack.isEmpty()); // true

stack.push(5);
stack.push(8);
console.log(stack.peek()); // 8

stack.push(11);
console.log(stack.size()); // 3
console.log(stack.isEmpty()); // false

stack.push(15);
stack.pop();
stack.pop();
console.log(stack.size()); // 2
stack.print(); // 5,8

stack.clear();
stack.print(); 

堆栈相关题目