JS数据结构——队列

江枫思渺然 提交于 2019-12-09 21:50:21

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

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
})()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!