使用 Javascript 创建优先级队列
javascriptweb developmentfront end technology
我们的类将具有以下函数 −
- enqueue(element):用于在队列中添加元素的函数。
- dequeue():用于从队列中删除元素的函数。
- peek():从队列前面返回元素。
- isFull():检查是否已达到队列的元素限制。
- isEmpty():检查队列是否为空。
- clear():删除所有元素。
- display():显示数组的所有内容
让我们首先定义一个简单的类,其中包含一个构造函数,该构造函数采用队列的最大大小,以及一个辅助函数,该函数将在我们为此类实现其他函数时为我们提供帮助。我们还必须定义另一个结构作为 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;
}
}
我们还定义了另外 2 个函数,isFull 和 isEmpty,用于检查堆栈是满的还是空的。
isFull 函数仅检查容器的长度是否等于或大于 maxSize,并相应地返回。
isEmpty 函数检查容器的大小是否为 0。
这些在我们定义其他操作时会很有帮助。从现在开始,我们定义的函数都将进入 PriorityQueue 类。
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

