Filas genéricas
Este projeto faz parte do PPOS v2.
O sistema operacional gerencia muitas filas: de tarefas aguardando o processador, de requisições de acesso ao disco, de pacotes a enviar na rede, etc. Este projeto visa construir uma pequena biblioteca em C que ofereça operações básicas de inserção e remoção em uma fila genérica.
A fila a ser implementada é genérica, ou seja, é uma fila de ponteiros void * onde cada elemento é um ponteiro para um dado cujo tipo não é conhecido pela biblioteca. A fila não armazena os dados, mas somente os ponteiros para eles. Assim, essa fila pode ser usada para organizar vários tipos de dados.
Além disso, a fila deve manter um iterador, ou seja, um cursor que permite percorrê-la e consultar seus itens.
As operações básicas da fila são:
queue_create: cria uma nova fila (vazia)queue_destroy: destrói uma fila (mas não destrói os itens em si; o responsável por destruir os itens é quem os criou)queue_add: adiciona um item ao fim da filaqueue_del: remove um item da filaqueue_size: informa o número de itens na filaqueue_print: imprime o conteúdo da fila
As operações seguintes usam o iterador:
queue_head: ajusta o iterador para o início da filaqueue_next: avança o iterador ao próximo item da filaqueue_item: informa o item indicado pelo iterador
Requisitos
Os arquivos necessários a este projeto estão em queue.tgz:
queue.h: interface da bibliotecaqueue.c: implementação da biblioteca (a implementar)testa-fila.c: programa de testetesta-fila.txt: saída esperada do programa de testemakefile: para a compilação
Os seguintes requisitos devem ser atendidos:
- A implementação deve ser feita em C no padrão C99 no arquivo
queue.c. - Com exceção de
queue.c, os arquivos fornecidos não devem ser alterados. - O código deve funcionar corretamente com o programa de teste.
- A saída do programa de teste deve ser igual à saída esperada (veja
make test).
queue.c. Assim, alterações feitas nos demais arquivos serão destruídas.
A entregar
Envie somente o arquivo queue.c através do Moodle.
Outras informações
- Dependências:
- Conhecimento da linguagem C.
