使用JavaScript创建优先级队列
我们的类将具有以下功能-
enqueue(element):在队列中添加元素的功能。
dequeue():从队列中删除元素的函数。
peek():从队列的前面返回元素。
isFull():检查我们是否达到队列上的元素限制。
isEmpty():检查队列是否为空。
clear():删除所有元素。
display():显示数组的所有内容
让我们从定义一个简单的类开始,该类具有一个构造函数,该构造函数占用队列的最大大小;以及一个辅助函数,当我们为该类实现其他函数时,该函数将对我们有所帮助。我们还必须定义另一个结构作为PriorityQueue类原型的一部分,该结构具有有关每个节点的优先级和数据。在实现堆栈时,我们还将使用数组来实现PriorityQueue。
示例
class PriorityQueue {
constructor(maxSize) {
//设置默认的最大大小(如果未提供)
if (isNaN(maxSize)) {
maxSize = 10;
}
this.maxSize = maxSize;
//初始化一个包含队列值的数组。
this.container = [];
}
//帮助程序功能在开发时显示所有值
display() {
console.log(this.container);
}
//检查队列是否为空
isEmpty() {
return this.container.length === 0;
}
//检查队列是否已满
isFull() {
return this.container.length >= this.maxSize;
}
}
//创建一个内部类,用于在队列中创建新节点
//每个元素都有一些数据和优先级
PriorityQueue.prototype.Element = class {
constructor (data, priority) {
this.data = data; this.priority = priority;
}
}我们还定义了另外两个函数isFull和isEmpty,以检查堆栈是否已满或为空。
isFull函数仅检查容器的长度是否等于或大于maxSize并相应地返回。
isEmpty函数检查容器的大小是否为0。
当我们定义其他操作时,这些将很有帮助。从现在开始,我们定义的功能将全部放入PriorityQueue类。