JS数据结构——队列

创建一个自己的类来表示一个队列

function Queue() {
    //这里写属性和方法
}

首先需要一个用于存储队列中元素的数据结构,可以用数组

let items = []

接下来声明一些队列可用的方法

  • enqueue(element(s)): 向队列尾部添加一个(或多个)新的项
  • dequeue(): 移除队列的第一(即排在队列最前面的)项,并返回被移除的元素
  • front(): 返回队列中第一个元素——最先被添加,也将是最先被移除的元素,队列不做任何变动
  • isEmpty(): 如果队列中不包含任何元素,返回true,否则返回false
  • size(): 返回队列包含的元素个数,与数组的length属性类似
function Queue() {
  let items = []
  this.enqueue = function(element) {
    items.push(element)
  }
  this.dequeue = function() {
    return items.shift()
  }
  this.front = function() {
    return items[0]
  }
  this.isEmpty = function() {
    return items.length == 0
  }
  this.size = function() {
    return items.length
  }
  this.print = function() {
    console.log(items.toString())
  }
}

let queue = new Queue()
console.log(queue.isEmpty())

queue.enqueue("liu")
queue.enqueue("ke")
queue.enqueue('yan')
queue.print()
console.log(queue.size())
console.log(queue.isEmpty())
queue.dequeue()
queue.dequeue()
queue.print()

ES6语法封装一个queue类

let Queue = (function() {
  const  items = new WeakMap()

  class Queue {
    constructor() {
      items.set(this, [])
    }
    enqueue(element) {
      let q = items.get(this)
      q.push(element)
    }
    dequeue() {
      let q = items.get(this)
      let r = q.shift()
      return r
    }
    front() {
      return items[0]
    }
    isEmpty() {
      return items.length == 0
    }
    size() {
      return items.length
    }
    print() {
      console.log(items.toString())
    }
  }
  return Queue
})()

今天你学习了吗!!!
原文地址:https://www.cnblogs.com/nayek/p/12013531.html