Então, agora sabemos o que é uma fila básica, mas e a fila de prioridade? Na fila de prioridade, cada elemento que entra na fila tem dois valores, um valor de prioridade e os dados. Os elementos que têm o mesmo valor de prioridade serão executados com base em FIFO (primeiro dentro e primeiro a sair) Mas elementos com maior prioridade do que outros serão executados primeiro, não importa quando foram adicionados à fila.
Este é um tópico avançado da estrutura de dados, por isso estamos assumindo que você está familiarizado com a forma como o JavaScript funciona e as funcionalidades básicas do JavaScript. Para implementar uma fila de prioridade em JavaScript, devemos primeiro saber como implementar uma fila simples em JavaScript.
Implementando uma fila em JavaScript
Os conceitos da estrutura de dados, como filas, pilhas, pilhas ou filas de prioridade, são implementados usando matrizes em javascript.
Vamos definir uma função que definirá nossa estrutura:
função fileue ()Sabemos que as filas são implementadas com matrizes, então vamos criar uma matriz denominada coleções
Dentro da função:
array = [];Agora, para implementar a estrutura de dados das filas, precisamos implementar as seguintes funcionalidades:
Essas funcionalidades são facilmente adicionadas usando as seguintes linhas de código:
functionQueue ()Agora, que temos nossa estrutura de dados pronta, precisamos criar um objeto mapeado para essa estrutura, fazemos isso usando a linha:
var newQueue = new fila ();Agora, precisamos de alguns elementos a serem colocados na fila, fazemos isso usando as seguintes linhas:
NewQueue.enquistar ('a');Para ver como a nossa fila parece agora, podemos chamar a função de impressão como assim:
NewQueue.imprimir();Recebemos a seguinte saída em nosso console:
Para testar, se a implementação de primeira e primeira saída estiver funcionando corretamente, vamos desacitar um elemento da lista e imprimir o valor principal e depois imprimir a fila restante inteira com as seguintes linhas:
NewQueue.dequeue ();O trecho completo do código da estrutura da fila é:
functionQueue ()Ao executar este código, podemos observar o seguinte resultado no console:
Então, quando chamamos a função Dequeue, ele removeu o primeiro elemento da lista. Depois disso, verificamos o principal elemento na fila que foi "B". Em seguida, imprimimos a fila novamente e ela nos deu a fila restante na ordem correta. Isso significa que nossa implementação da fila está funcionando perfeitamente:
Implementando uma fila de prioridade em JavaScript
Sabemos a diferença entre uma fila normal e uma fila de prioridade é que os elementos dentro da fila de prioridade contêm um valor de prioridade junto com seus dados. Isso significa que toda a funcionalidade da fila de prioridade é a mesma que uma fila normal, exceto para o Função de enquadre.
Nas filas prioritárias, a função de enquadança coloca o elemento de prioridade mais alta antes do elemento de prioridade mais baixa. E se dois ou mais elementos tiverem a mesma prioridade, os elementos recém-adicionados serão colocados no final posterior da fila para manter um método de avaliação de primeira e primeira saída.
Portanto, tendo isso em mente, podemos escrever a nova função de enquadança para a fila de prioridade com as seguintes linhas de código:
esse.Enqueue = function (newmem)A primeira coisa que fazemos na função de enoca é que, se a coleção estiver vazia, apenas empurramos o elemento para a fila:
se este.está vazia())Se a fila não estiver vazia:
O todo enquadre A função ficará assim:
esse.Enqueue = function (newmem)O restante das funções da fila de prioridade é praticamente o mesmo que a fila normal, com uma ligeira mudança na função de dequeue para exibir apenas o nome e não o valor do elemento. Todo o trecho de código da fila de prioridade é como:
functionPriorityQueue ()Hora de colocar elementos na fila usando as seguintes linhas de código:
var pq = new priorityQueue ();Como você pode ver, a primeira prioridade é o “Microsoft” elemento com valor 1. Deve estar no início da fila, mesmo que tenha sido adicionado no 3º lugar.
Agora, se chamarmos a função Dequeue e, em seguida, a função de impressão novamente, o primeiro elemento deve ser removido da lista:
pq.dequeue ();Lá está você, nossa fila de prioridade está funcionando perfeitamente.
Conclusão
Filas são conceitos de estrutura de dados que funcionam no método de avaliação de primeiro e primeiro a sair. Da mesma forma, filas prioritárias funcionam sobre a avaliação do primeiro e primeiro a sair, mas com um valor extra de "prioridade", o elemento com a maior prioridade será executado primeiro, não importa quando foram adicionados à fila. Neste post, aprendemos a implementar uma fila simples em JavaScript e como usar essa estrutura de dados para implementar o funcionamento de uma fila de prioridade.