Projeto 09: Filas (Queues): Princípio FIFO, Fila Circular e Deque 🚀
Escopo do Desafio
Objetivo: Desenvolver uma biblioteca modular e reutilizável em linguagem C implementando o Tipo Abstrato de Dados correspondente a Filas (Queues): Princípio FIFO, Fila Circular e Deque.
🎯 1. Descrição do Problema
Você faz parte da equipe de engenharia de software de uma plataforma de processamento de alto volume. O sistema necessita de uma implementação de Filas (Queues): Princípio FIFO, Fila Circular e Deque que atenda aos mais altos requisitos de estabilidade, desempenho assintótico e robustez contra corrupção de memória.
📋 2. Requisitos Técnicos Obrigatórios
- R1 (Encapsulamento Estrito): Separar a interface pública em arquivo de cabeçalho (
.h) e a estrutura interna no arquivo de implementação (.c). - R2 (Gestão Dinâmica de Memória): Todas as operações de criação devem possuir sua respectiva função de destruição (
destruir), liberando recursivamente todos os nós alocados. - R3 (Tratamento de Ponteiros Nulos): Nenhuma função pode causar crash (Segmentation Fault) caso receba argumentos nulos; retorne códigos de erro apropriados.
- R4 (Suíte de Testes Unitários): Implementar um arquivo
main.ccom asserções (assert) testando casos de borda (estrutura vazia, inserções unitárias, inserções em massa e remoções).
📐 3. Diagrama Conceitual da Estrutura
graph TD
Client["💻 Aplicação Cliente (main.c)"] -->|Interface Pública .h| TAD["📦 TAD: Filas (Queues): Princípio FIFO, Fila Circular e Deque"]
TAD -->|malloc / free| Heap["🧠 Heap de Memória (Nós Dinâmicos)"]
style Client fill:#e3f2fd,stroke:#1565c0
style TAD fill:#fff3e0,stroke:#e65100,stroke-width:2px
style Heap fill:#e8f5e9,stroke:#2e7d32 💻 4. Código Esqueleto de Partida
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
// Estrutura do projeto
int main(void) {
printf("Iniciando testes de Filas (Queues): Princípio FIFO, Fila Circular e Deque...\n");
// Inserir asserções de validação
printf("Todos os testes passaram com sucesso!\n");
return 0;
}
📦 5. Critérios de Avaliação
- Compilação limpa sem nenhum warning:
gcc -Wall -Wextra -pedantic main.c. - Execução sob o Valgrind comprovando zero vazamentos de memória (All heap blocks were freed -- no leaks are possible).
- Respeito rigoroso à complexidade assintótica estipulada na especificação teórica.