队列
1. 概念
与栈相反,队列是一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾。
2. 特点:
先进先出
3. 生活中的案例:
常见的排队,在电影院也好,排队结账也是,排在第一位的人会先接受服务。
4.与栈的区别
队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。
实现:
class Queue {
constructor(items) {
this.items = items || [];
}
// 排队
enqueue(element) {
this.items.push(element);
}
// 离队
dequeue() {
return this.items.shift();
}
// 第一位
front() {
return this.items[0];
}
// 清除队列
clear() {
this.items = [];
}
// 获取队列长度
get size() {
return this.items.length;
}
// 队列是否为空
get isEmpty() {
return !this.items.length;
}
// 打印整个队列
print() {
console.log(this.items.toString());
}
}
const queue = new Queue();
console.log(queue.isEmpty); // true
queue.enqueue("John");
queue.enqueue("Jack");
queue.enqueue("Camila");
console.log(queue.size); // 3
console.log(queue.isEmpty); // false
queue.dequeue();
queue.dequeue();
queue.print(); // 'Camila'