在JavaScript中,队列(Queue)是一种特殊的线性数据结构,它遵循FIFO(First In First Out,先进先出)原则。在队列中,元素从一端(队尾)被添加,而从另一端(队头)被移除。
以下是一个简单的JavaScript队列实现:
class Queue {
constructor() {
this.items = [];
}
// 入队操作
enqueue(element) {
this.items.push(element);
}
// 出队操作
dequeue() {
if (this.isEmpty()) {
return "Underflow";
}
return this.items.shift();
}
// 查看队首元素
front() {
if (this.isEmpty()) {
return "No elements in Queue";
}
return this.items[0];
}
// 检查队列是否为空
isEmpty() {
return this.items.length === 0;
}
// 获取队列的大小
size() {
return this.items.length;
}
// 打印队列中的元素
printQueue() {
let str = "";
for (let i = 0; i < this.items.length; i++) {
str += this.items[i] + " ";
}
return str;
}
}
// 使用示例
let queue = new Queue();
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
console.log(queue.printQueue()); // 输出: 10 20 30
console.log(queue.dequeue()); // 输出: 10
console.log(queue.front()); // 输出: 20
console.log(queue.size()); // 输出: 2
shift()
操作是O(n)复杂度。为了解决这个问题,可以使用链表来实现队列,或者使用两个指针(front和rear)来跟踪队列的开始和结束位置,从而实现O(1)复杂度的入队和出队操作。领取专属 10元无门槛券
手把手带您无忧上云