队列是一种遵循先进先出原则的有序集合。
添加新元素的一端称为队尾,另一端称为队首。类似于我们现实生活中的排队。
队列的实现
我们需要实现以下功能:
- enqueue()入队方法
- dequeue()出队方法
- top()获取队首值
- size()获取队列的元素个数
- clear()清空队列
代码
基于数组的实现:
class Queue {
constructor() {
//用于存储队列数据
this.queue = [];
this.count = 0;
}
isEmpty() {
return this.count === 0;
}
enQueue(item) {
this.queue[this.count++] = item
}
deQueue() {
if (this.isEmpty()) {
return
}
// delete this.queue[0],empty占位后续会删不掉。
this.count--
return this.queue.shift()
}
top() {
return this.queue[0]
}
size() {
return this.count
}
clear() {
// this.queue = []
this.queue.length = 0;
this.count = 0;
}
}
const q = new Queue()
基于对象的实现:
class Queue {
constructor() {
this.queue = {};
this.count = 0;
//用于记录队首的键
this.head = 0;
}
isEmpty() {
return this.queue === 0;
}
enQueue(item) {
this.queue[this.count++] = item;
}
deQueue() {
if (this.isEmpty()) {
return
}
const headData = this.queue[this.head];
delete this.queue[this.headData];
this.head++;
this.count--;
return headData;
}
clear() {
this.queue = {};
this.count = 0;
this.head = 0;
}
}
const q = new Queue()