Recomendações relacionadas: tutorial de javascript
De uma perspectiva de alto nível, uma fila é uma estrutura de dados que nos permite processar cada item de dados na ordem em que são armazenados no banco de dados.
A fila suporta 2 operações principais: enfileirar e desenfileirar. Além disso, você pode achar útil executar operações de espiada e comprimento na fila.
A operação de enfileiramento na figura acima insere o item 8 no final e 8 se torna o final da fila.
queue.enqueue(8);
Na imagem acima, a operação de desenfileiramento retorna e remove o item 7 da fila. Após desenfileirar, o item 2 se torna o novo item principal.
queue.dequeue(); // => 7
O item 7 é o início da fila da figura acima, e a operação de inspeção retorna apenas o cabeçalho (item) 7 sem modificar a fila.
queue.peek(); // => 7
Existem 4 itens na fila da imagem: 4, 6, 2 e 7. Como resultado, o comprimento da fila é 4.
queue.length; // => 4
O tempo constante O(1) significa que não importa o tamanho da fila (pode ter 10 ou 1 milhão de itens): as operações de enfileiramento, desenfileiramento, peek e comprimento devem ser realizadas simultaneamente.
Vejamos uma possível implementação de uma estrutura de dados de fila, mantendo o requisito de que todas as operações devem ser executadas em tempo constante O(1).
classe Fila { construtor() { isto.items = {}; this.headIndex = 0; this.tailIndex = 0; } enfileirar(item) { this.items[this.tailIndex] = item; this.tailIndex++; } desenfileirar() { const item = this.items[this.headIndex]; exclua this.items[this.headIndex]; this.headIndex++; item de devolução; } espiar() { retornar este.items[este.headIndex]; } obter comprimento() { retornar this.tailIndex - this.headIndex; } } fila const = new Queue(); fila.enqueue(7); fila.enqueue(2); fila.enqueue(6); fila.enqueue(4); fila.dequeue(); // => 7 fila.peek(); // => 2 queue.length; // => 3
const queue = new Queue() é como criar uma instância de uma fila.
Chame o método queue.enqueue(7) para colocar o item 7 na fila.
queue.dequeue() remove um item principal da fila, enquanto queue.peek() apenas espia desde o início.
Finalmente, queue.length mostra quantos itens restam na fila.
Quanto à implementação: Dentro da classe Queue, o objeto simples this.items contém os itens da fila por índice numérico. O índice do item principal é rastreado por this.headIndex, e o índice do item final é rastreado por this.tailIndex.
Os métodos queue(), dequeue(), peek() e length() da classe Queue usam apenas:
acesso a atributos (como this.items[this.headIndex]), ou realizar operações aritméticas (como this.headIndex++).
Portanto, a complexidade de tempo desses métodos é de tempo constante O(1).
A estrutura de dados da fila é um tipo de "primeiro a entrar, primeiro a sair" (FIFO): o primeiro item a ser enfileirado é o primeiro item a ser retirado da fila.
As filas têm 2 operações principais: enfileirar e desenfileirar. Além disso, as filas podem ter operações auxiliares, como visualização e comprimento.
Todas as operações de fila devem realizar O(1) em tempo constante.
Recomendações relacionadas: Tutorial de aprendizagem de JavaScript
acima é uma explicação detalhada da implementação de filas em JavaScript com exemplos e imagens. Para obter mais informações, preste atenção a outros artigos relacionados no site PHP chinês!