O TAD FPrio

Este trabalho visa implementar o tipo abstrato de dado Fila de Prioridades (FPrio).

Uma fila de prioridades é uma fila de itens onde cada item é associado a uma prioridade (ou chave); os itens da fila são mantidos ordenados segundo prioridades crescentes.

Filas de prioridades são muito usadas quando há necessidade de manter dados ordenados segundo algum critério. Por exemplo, simulações geralmente usam uma fila de prioridades chamada Lista de Eventos Futuros (LEF) para manter os próximos eventos que irão ocorrer na simulação, na ordem crescente do tempo associado a cada evento. Nesse caso, a chave/prioridade de cada evento é o seu instante de ocorrência.

Algumas operações tipicamente definidas sobre uma fila de prioridades são:

Exemplo de funcionamento:

operação (item, prioridade) conteúdo da fila
cria
insere (A, 3) (A, 3)
insere (B, 6) (A, 3) (B, 6)
insere (C, 1) (C, 1) (A, 3) (B, 6)
insere (D, 2) (C, 1) (D, 2) (A, 3) (B, 6)
insere (E, 2)1) (C, 1) (D, 2) (E, 2) (A, 3) (B, 6)
insere (F, 4) (C, 1) (D, 2) (E, 2) (A, 3) (F, 4) (B, 6)
retira min (D, 2) (E, 2) (A, 3) (F, 4) (B, 6)
retira min (E, 2) (A, 3) (F, 4) (B, 6)
retira max (E, 2) (A, 3) (F, 4)

Fila genérica

A fila de prioridades a ser implementada neste projeto deve ser genérica, ou seja, ela pode armazenar qualquer tipo de informação (inteiros, structs, outras filas, etc).

A solução para esse problema consiste em:

Uma fila genérica é portanto implementada como uma lista encadeada de ponteiros com tipos associados, assim:

Fila de prioridades genérica

Atividade

Você deve implementar um TAD Fila de Prioridades genérico usando uma lista encadeada simples, com as seguintes características:

Os arquivos necessários para desenvolver este trabalho estão neste arquivo. Eles são:

Entregáveis

Entregue um único arquivo tp5.tgz contendo todos os arquivos do projeto.

Critérios de avaliação:

1)
Se dois itens têm a mesma prioridade, devem ser inseridos e retirados em ordem FIFO.