JavaScript 中的队列数据结构
队列的应用
基本操作
如何使用队列
示例用法
队列是元素的线性列表,其中元素的删除可以在一端进行,称为队列,Front
而元素的插入可以在另一端进行,称为队列。Rear
队列中的第一个元素将最先从列表中移除。队列也称为先进先出 (FIFO)。
把队列想象成一条线。它是水平的。队列中的第一个元素最先出来。队列从左边开始,到右边结束。因此,你可以使用 pop() 来移除数组的“最后一个”元素。
队列的应用
- 在单个共享资源上处理请求,例如 PointerEvent、CPU 任务调度等,
- 在现实生活中,呼叫中心电话系统(人们应该等待并保持直到服务代表有空)
- 处理实时系统中的中断。
基本操作
可以执行的基本操作是Enqueue
、dequeue
和display
。
入队(插入术语) - 将项目添加到队列。
出队(删除术语) - 从队列中删除一个项目
IsEmpty——检查队列是否为空。
IsFull-检查队列是否已满。
Peek——获取队列前面的元素但不将其移除。
如何使用队列
创建一个队列数据结构。该队列应该是一个具有方法的类enqueue
。dequeue
添加到队列的操作应该存储一个元素,直到
它被移除。
待实现的功能
enqueue(item)
dequeue()
front()
isEmpty()
示例用法
const q = new Queue();
q.enqueue(1);
q.dequeue(); // returns 1;
// Queue class
class Queue {
constructor() {
// Array is used to implement a Queue
this.data = [];
}
// Functions to be implemented
// enqueue(item)
// dequeue()
// front()
// isEmpty()
// Adds an element to the queue
enqueue(item) {
this.data.unshift(item);
}
// removing element from the queue
// returns underflow when called
// on empty queue
dequeue() {
if (this.isEmpty()) {
return "Underflow";
}
return this.data.shift();
}
// front function
front() {
// returns the Front element of
// the queue without removing it.
if (this.isEmpty())
return "No elements in Queue";
return this.data[0];
}
// isEmpty function
isEmpty() {
// return true if the queue is empty.
return this.data.length === 0;
}
}
module.exports = Queue;
如果您发现本文有用,请点击关注此频道以获取有关使用 Javascript 的数据结构的更多文章。