美丽的人,美丽?
今天,我谈论了数据结构中一个非常重要的主题,这次解决了 Quelas 主题。这是开发人员日常生活中存在的一个非常重要的主题,我们通常甚至没有意识到。
什么是队列?
一行是基于fifo 概念(首先是)的概念的有序项目集合。基本上,它首先要进入也要进入也首先要离开。例如,与电影系列一样。而且新项目总是在生产线的末端添加。
这在哪里应用?
队列是一种充分利用的数据结构,在软件开发过程中以徒劳的形式使用。例如:
-
电子邮件队列:非常常见您的应用程序生成要使用云发送的电子邮件。这些电子邮件不是直接发送的。他们输入要处理并发送到您的目的地的行。
-
付款处理:想象一下,如果您在亚马逊购买商品,并且由于某种原因您的付款没有处理?为了能够处理付款的数量并确保可以使用队列来控制此付款。
在实践中
这是行实施的一个示例和某些形式的使用 -
class Queue {
// Quantidade de items na fila.
#count = 0;
// Serve para controlar quando é o primeiro item da fila. Não necessáriamente pode ser 0.
#lowestCount = 0;
// Objeto com todos os items armazenados.
#items = {};
// Adiciona os items na fila.
enqueue(element) {
this.#items[this.#count] = element;
this.#count++;
}
// Verifica se a fila está vazia.
isEmpty() {
return (this.#count - this.#lowestCount) === 0;
}
// Remove o primeiro item da fila.
dequeue() {
if (this.isEmpty()) {
return undefined;
}
const result = this.#items[this.#lowestCount];
delete this.#items[this.#lowestCount];
this.#lowestCount++;
return result;
}
// Retorna o primeiro item da fila.
peek() {
if(this.isEmpty()) {
return ''
}
return this.#items[this.#lowestCount];
}
// Retorna o tamanho da fila.
size() {
return this.#count - this.#lowestCount;
}
// Limpa a fila.
clear() {
this.#items = {};
this.#count = 0;
this.#lowestCount = 0;
}
// Retorna todos os items da fila em uma string.
toString() {
if (this.isEmpty()) {
return '';
}
let objString= `${this.#items[this.#lowestCount]}`;
for (let index = this.#lowestCount + 1; index < this.#count; index++) {
objString = `${objString}, ${this.#items[index]}`;
}
return objString;
}
}
这是非常简单使用我们的行的示例。首先,我们是班级,然后开始添加项目并根据需要操纵队列。
const queue = new Queue();
queue.enqueue("Cristian"); // Cristian
queue.enqueue("Paulo"); // Cristian, Paulo
console.log(queue.size()) // 2
queue.enqueue("Mateus"); // Cristian, Paulo, Mateus
queue.dequeue();
console.log(queue.toString()) // Paulo, Mateus
console.log(queue.peek()); // Paulo
queue.clear();
console.log(queue.isEmpty()); // True
服务
我们已经看到,使用大型行是一个非常复杂的任务,实现和使用队列看起来像一个简单的任务。使用服务执行此任务是常见的,有几种服务和方法,例如AWS SQS。
其他类型的队列
还有另一种类型的队列称为 deck 或两个点的队列。它允许您在线的两个尖端上进行删除和插入操作。
反射
Estruturas de Dados e Algoritmos com JavaScript by Loiane Groner
如果您到达©这里,请在redes vizinhas.中关注我