创建一个自己的类来表示一个队列
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
})()