数据结构:队列
#编程 #database #braziliandevs #ptbr

美丽的人,美丽?

今天,我谈论了数据结构中一个非常重要的主题,这次解决了 Quelas 主题。这是开发人员日常生活中存在的一个非常重要的主题,我们通常甚至没有意识到。

什么是队列?

Fila de pinguins

一行是基于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.中关注我