Um repositório de implementações "from scratch" (do zero), focando na lógica algorítmica pura e no gerenciamento manual de memória.
Este projeto não se trata apenas de código, mas de fundamentação teórica aplicada. O objetivo é solidificar o entendimento de como os dados são organizados na memória, abrindo mão de bibliotecas prontas para implementar cada nó, ponteiro e alocação manualmente.
- Gestão de Memória: Uso extensivo de
malloc,freee aritmética de ponteiros. - Complexidade Algorítmica: Foco na eficiência das operações de busca, inserção e remoção.
- Abstração: Implementação de Tipos Abstratos de Dados (TADs).
O alicerce da organização de dados sequenciais.
| Estrutura | Variações Implementadas |
|---|---|
| Listas Encadeadas | • Simplesmente Encadeada • Duplamente Encadeada • Circular • Com Nó Cabeça (Sentinela) |
| Pilhas (Stacks) | Implementações baseadas em Vetores (Arrays) e Listas Dinâmicas. |
| Filas (Queues) | Implementações baseadas em Vetores e Listas. |
Implementações hierárquicas focadas em performance de busca.
- BST (Binary Search Tree): A base das árvores, com operações de inserção, remoção e travessia.
-
AVL Tree: Árvore auto-balanceável.
-
Aplicação Prática: Projeto Dicionário, onde a AVL é usada para garantir buscas em tempo logarítmico
$O(\log n)$ .
-
Aplicação Prática: Projeto Dicionário, onde a AVL é usada para garantir buscas em tempo logarítmico
- Red-Black Tree: Implementação complexa de árvore rubro-negra balanceada.
Estruturas avançadas para mapeamento e relações.
- Tabelas Hash: Tratamento de colisões via Endereçamento Aberto e Encadeamento.
- Grafos:
- Representação: Matriz de Adjacência e Lista de Adjacência.
- Algoritmos: Busca em Largura (BFS) e Busca em Profundidade (DFS).
Por que C? A escolha da linguagem C foi intencional para permitir o controle total sobre a memória e entender o custo computacional de cada abstração, algo que linguagens de alto nível muitas vezes escondem.
Como os códigos são independentes, você pode compilar qualquer estrutura individualmente usando o GCC.
# Exemplo genérico de compilação
gcc nome_do_arquivo.c -o saida
# Executando
./saida