freeCodeCamp/guide/portuguese/computer-science/data-structures/queues/index.md

46 lines
2.6 KiB
Markdown
Raw Normal View History

---
title: Queues
localeTitle: caudas
---
## Filas
Fila é uma Estrutura de Dados First In First Out (FIFO). Muitos algoritmos usam filas em seu núcleo para melhorar o desempenho.
A fila é um dos tipos abstratos de dados abstratos (ADT). É semelhante a filas que temos em filmes ou supermercados. A primeira pessoa a chegar será servida primeiro, certo? Da mesma forma, o primeiro elemento a ser inserido será removido primeiro. Existem vários tipos de filas, como
1. Fila Simples (ou Fila)
2. Fila Circular
3. Fila de prioridade
4. Dequeue (fila dupla terminada)
Se você puder entender a fila simples (que daqui em diante será chamada de 'Fila'), todas as outras serão igualmente fáceis, com poucas modificações.
As operações mais comuns disponíveis na fila são,
1. Adicionar / Oferecer - insere um elemento no final da fila.
2. Remover / Pesquisar - Remove um elemento do começo da fila.
3. Peek - Retorna o elemento no início da fila, mas não o remove.
4. Tamanho / Contagem - Retorna o número de elementos atualmente presentes na fila.
5. IsEmpty - Verifique se a fila está vazia ou não.
A implementação de uma fila é possível usando arrays ou listas vinculadas. A seguir, uma implementação de matriz simples da estrutura de dados da fila com suas operações mais comuns.
\`\` \`JavaScript
var Queue = function () { var queue = \[\]; var front = 0; var back = 0; Retorna { isEmpty: function () { retornar frente> = voltar || queue.length === 0; } add: function (elem) { / \* Você também pode fazer queue.push (elem) em JavaScript. É assim que eles fazem em outros idiomas \* / fila \[voltar ++\] = elem; } remove: function () { if (! this.isEmpty ()) { fila de retorno \[frente ++\]; // ou queue.shift () } outro { throw new Error ("Fila está vazia"). } } espiada: function () { if (! this.isEmpty ()) { fila de retorno \[frente\]; } } } };
var queue = new Fila (); console.log (queue.isEmpty ()); // verdade queue.add (1); fila.add (2); console.log (queue.remove ()); // 1 console.log (queue.peek ()); // 2 console.log (queue.remove ()); // 2 console.log (queue.remove ()); // exception \`\` \`
#### Aplicações
* Simulação
* Agendamento (Job Scheduling, Disk Scheduling)
* Gestão Compartilhada de Recursos
* Buffer do Teclado
* Largura Primeira Pesquisa
* Para lidar com o congestionamento na rede
#### Mais Informações:
* [Mais informações sobre filas - GeeksForGeeks](http://www.geeksforgeeks.org/queue-data-structure/)
* [Resolva Desafios Usando Filas - Hackerrank](https://www.hackerrank.com/domains/data-structures/queues)
* [Vídeo do HackerRank Stacks and Queues](https://www.youtube.com/watch?v=wjI1WNcIntg)