====== Filas genéricas ====== Este projeto faz parte do [[PPOS-v2:start|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. {{ queue.png |Fila genérica}} 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 fila * ''queue_del'': remove um item da fila * ''queue_size'': informa o número de itens na fila * ''queue_print'': imprime o conteúdo da fila As operações seguintes usam o iterador: * ''queue_head'': ajusta o iterador para o início da fila * ''queue_next'': avança o iterador ao próximo item da fila * ''queue_item'': informa o item indicado pelo iterador Esta biblioteca será utilizada em vários outros projetos, portanto capriche na sua implementação! ===== Requisitos ===== Os arquivos necessários a este projeto estão em {{ queue.tgz |}}: * ''queue.h'' : interface da biblioteca * ''queue.c'' : implementação da biblioteca (a implementar) * ''testa-fila.c'' : programa de teste * ''testa-fila.txt'' : saída esperada do programa de teste * ''makefile'' : 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''). O processo de correção substitui os arquivos do projeto pelas versões originais, com exceção da implementação do aluno em ''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.