Skip to content
On this page

前置知识

在 JavaScript 中,栈和队列的实现一般都要依赖于数组,可以把栈和队列都看作是“特别的数组”。

两者的区别在于,它们各自对数组的增删操作有着不一样的限制。

数组的方法

添加元素方法

  • unshift 方法-添加元素到数组的头部

  • push 方法-添加元素到数组的尾部

  • splice 方法-添加元素到数组的任何位置(第三个参数)

删除元素方法

  • shift 方法-删除数组头部的元素

  • pop 方法-删除数组尾部的元素

  • splice 方法-删除数组任意位置的元素

栈(Stack)——只用 pop 和 push 完成增删的“数组”

栈是一种后进先出(LIFO,Last In First Out)的数据结构。

  • 只允许从尾部添加元素
  • 只允许从尾部取出元素

对应到数组的方法,刚好就是 push 和 pop。因此,我们可以认为在 JavaScript 中,栈就是限制只能用 push 来添加元素,同时只能用 pop 来移除元素的一种特殊的数组。

力扣上关于栈的题目 20,155,232,844,224,682,496

队列(Queue)——只用 push 和 shift 完成增删的“数组”

队列是一种先进先出(FIFO,First In First Out)的数据结构。

  • 只允许从尾部添加元素
  • 只允许从头部移除元素

也就是说整个过程只涉及了数组的 push 和 shift 方法。