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 | ||
so:biblioteca_de_filas [2019/03/15 20:33] – maziero | so:biblioteca_de_filas [2023/03/21 11:37] (atual) – [A entregar] maziero | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Biblioteca de Filas ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | O sistema operacional gerencia muitas filas: de processos prontos, suspensos, dormindo, esperando em semáforos, etc. A estrutura de dados mais adequada para implementar essas filas é uma **lista circular duplamente encadeada**, | ||
+ | |||
+ | {{ so: | ||
+ | |||
+ | Este projeto consiste em construir uma pequena biblioteca que ofereça operações básicas de inserção e remoção em uma lista circular duplamente encadeada totalmente escrita em C (padrão C99), usando estruturas e ponteiros. A fila é genérica e pode ser usada para organizar vários tipos de dados. | ||
+ | |||
+ | <note important> | ||
+ | Esta biblioteca será utilizada em vários outros projetos, portanto capriche na implementação! | ||
+ | </ | ||
+ | |||
+ | ===== Interface ===== | ||
+ | |||
+ | A biblioteca a ser construída deverá respeitar rigorosamente a interface definida no arquivo {{so: | ||
+ | |||
+ | Eventuais mensagens de erro devem ser escritas na saída de erro ('' | ||
+ | |||
+ | ===== A entregar ===== | ||
+ | |||
+ | Somente o arquivo '' | ||
+ | |||
+ | ===== Exemplos ===== | ||
+ | |||
+ | Os exemplos abaixo permitem compreender o significado preciso das estruturas e operações a implementar. | ||
+ | |||
+ | === Exemplo 1 === | ||
+ | |||
+ | Uma fila com um único elemento, uma fila vazia e um elemento isolado (elemento fora de uma fila): | ||
+ | |||
+ | {{ so: | ||
+ | |||
+ | === Exemplo 2 === | ||
+ | |||
+ | Inserção de um elemento em uma fila vazia: | ||
+ | |||
+ | {{ so: | ||
+ | |||
+ | Observe que: | ||
+ | |||
+ | * o elemento a inserir deve estar isolado, ou seja, não deve pertencer a nenhuma outra fila; | ||
+ | * o elemento a inserir já existe, ou seja, não há necessidade de alocar memória para ele ('' | ||
+ | |||
+ | === Exemplo 3 === | ||
+ | |||
+ | Inserção de um elemento no fim de uma fila não-vazia: | ||
+ | |||
+ | {{ so: | ||
+ | |||
+ | === Exemplo 4 === | ||
+ | |||
+ | Remoção de um elemento da fila, indicado pelo ponteiro aux. Observe que a remoção apenas retira o elemento da fila, sem o destruir, alterar seu conteúdo ou liberar sua memória. | ||
+ | |||
+ | {{ so: | ||
+ | |||
+ | <note warning> | ||
+ | É importante observar que as operações feitas por esta biblioteca consistem somente de manipulações de ponteiros; portanto, não devem ser feitas alocações/ | ||
+ | </ | ||
+ | |||
+ | ===== Outras informações ===== | ||
+ | |||
+ | * Duração estimada: 6 horas. | ||
+ | * Dependências: | ||
+ | * Conhecimento de linguagem C. | ||