Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
prog1:tad_fprio [2024/10/31 13:02] – [Fila genérica] maziero | prog1:tad_fprio [2024/10/31 19:38] (atual) – maziero | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== O TAD FPrio ====== | ||
+ | Este trabalho visa implementar o tipo abstrato de dado //Fila de Prioridades// | ||
+ | |||
+ | Uma [[https:// | ||
+ | |||
+ | Filas de prioridades são muito usadas quando há necessidade de manter dados ordenados segundo algum critério. Por exemplo, | ||
+ | |||
+ | 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)((Se dois itens têm a mesma prioridade, devem ser inseridos e retirados em ordem FIFO.)) | (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**, | ||
+ | |||
+ | A solução para esse problema consiste em: | ||
+ | |||
+ | * a fila não deve armazenar dados, mas somente ponteiros para eles | ||
+ | * os itens da fila devem ser ponteiros genéricos ('' | ||
+ | * a fila deve armazenar uma informação sobre o tipo do dado apontado em cada item | ||
+ | |||
+ | Uma fila genérica é portanto implementada como uma lista encadeada de ponteiros com tipos associados, assim: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== Atividade ===== | ||
+ | |||
+ | Você deve implementar um TAD //Fila de Prioridades// | ||
+ | |||
+ | * A cada item da fila é associada uma **prioridade** (valor inteiro) | ||
+ | * A fila deve ser mantida em ordem crescente de prioridades | ||
+ | * Itens com a mesma prioridade devem respeitar a política FIFO | ||
+ | * Cada item na fila é um ponteiro genérico ('' | ||
+ | * A cada item é associado um **tipo** (inteiro), que permite à aplicação saber o que está armazenado ali | ||
+ | |||
+ | Os arquivos necessários para desenvolver este trabalho estão {{: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== Entregáveis ===== | ||
+ | |||
+ | Entregue um único arquivo '' | ||
+ | |||
+ | Critérios de avaliação: | ||
+ | |||
+ | * Funcionar corretamente m( | ||
+ | * Não ter problemas de memória (testar com Valgrind) | ||
+ | * Respeitar o conceito de TAD | ||
+ | * Usar funções para evitar repetição de blocos de código | ||
+ | * Respeitar estilo (endentação, | ||
+ | * Usar comentários (nem demais, nem de menos) | ||
+ | * ... (outros que se fizerem necessários) |