Fila de prioridade
É um conjunto ordenado de itens a partir do qual podem-se eliminar itens em uma extremidade(inicio da fila) e adicionar itens na outra extremidade(fim da fila). Fila, diferentemente de pilha que usa o conceito de FILO(First-in, Last-out), usa o conceito FIFO(First-in, First-out), ou seja, o item ou elemento que entrar primeiro, obrigatoriamente, deve sair primeiro. Isso impossibilita a exclusão/inserção de algum item no meio da fila, caracterizando essa estrutura de dado como uma Lista com Restrição de Acesso. Em filas podem-se aplicar três operações primitivas: * insert(q,x): insere item x no fim da fila q. Pode sempre ser executada, uma vez que que não há limites para o número de elementos que uma fila pode ter.
Exemplo:
INICIO FIM
A | D | C | F | B | (q) insert(q, A); insert(q, D); insert(q, C); insert(q, F); insert(q, B);
* x = remove(q): elimina o primeiro elemento da fila q e atribui o valor do item em x. Esta operação só pode ser aplicada se houver pelo menos um item na fila, ou seja, lista não vazia, pois não existe um método para remover um elemento de uma fila sem elementos. O resultado da tentativa de exclusão/remoção de um elemento de uma fila vazia é chamado de underflow.
Exemplo:
Fila antes: INICIO FIM
A | D | C | F | B | (q) x = remove(q); x = remove(q); x = remove(q);
Fila depois: INICIO FIM
F | B | | | | (q) * empty(q): retorna verdadeiro ou falso, dependendo se a fila estiver vazia ou não. Esta operação é sempre aplicável.
Conceito Fila com Prioridade É uma estrutura de dado que a classificação intrínseca dos elementos determina os resultados de suas operações. Há dois tipos de filas com prioridade. * Ascendente: itens podem ser inseridos arbitrariamente, mas só pode removido o