// Base de consulta por taxonomia
Referencias tecnicas das estruturas
Documentacao resumida para cada estrutura do projeto, com foco em classificacao, implementacao,
cenarios de uso e um link tecnico externo para aprofundamento.
Array Estático
Static Array
- C#
- T[]
- Implementacao
- array contíguo fixo
Resumo: Bloco contíguo de memória com acesso direto por índice.
Quando usar: Bom quando o tamanho é previsível e leitura por posição precisa ser rápida.
Pontos de atencao: Inserir ou remover no meio desloca elementos e custa mais.
Busca
O(n)
Insercao
O(n)
Alteracao
O(1)
Lista Dinâmica
Dynamic List
- C#
- List<T>
- Implementacao
- array dinâmico contíguo
Resumo: Lista baseada em array dinâmico, com crescimento de capacidade sob demanda.
Quando usar: Boa quando o tamanho varia, mas acesso por índice e iteração sequencial continuam importantes.
Pontos de atencao: Inserções no meio ainda deslocam elementos e realocações ocasionais copiam o buffer inteiro.
Busca
O(n)
Insercao
O(1)
Alteracao
O(1)
Lista Encadeada Simples
Singly Linked List
- C#
- custom SinglyLinkedList
- Implementacao
- nós com next
Resumo: Coleção linear formada por nós em que cada item aponta só para o próximo.
Quando usar: Útil quando inserções na cabeça são frequentes e a travessia sequencial basta.
Pontos de atencao: Não oferece acesso aleatório eficiente e a busca segue linear.
Busca
O(n)
Insercao
O(1)
Alteracao
O(n)
Lista Encadeada Dupla
Doubly Linked List
- C#
- LinkedList<T>
- Implementacao
- lista duplamente encadeada
Resumo: Lista em que cada nó conhece o anterior e o próximo, permitindo travessia nos dois sentidos.
Quando usar: Boa para inserir e remover itens conhecidos sem precisar voltar a estrutura inteira.
Pontos de atencao: Cada nó consome mais memória e a localização por índice continua linear.
Busca
O(n)
Insercao
O(1)
Alteracao
O(n)
Lista Circular
Circular Linked List
- C#
- custom CircularList
- Implementacao
- lista encadeada circular
Resumo: Variante encadeada em que o último nó volta ao início e a iteração pode recomecar sem reposicionar ponteiros.
Quando usar: Faz sentido em round-robin, buffers cíclicos e escalonamento.
Pontos de atencao: A parada da iteração exige mais cuidado para não criar loops infinitos.
Busca
O(n)
Insercao
O(n)
Alteracao
O(n)
Pilha (Stack)
Stack
- C#
- Stack<T>
- Implementacao
- coleção LIFO
Resumo: Estrutura em que o último item inserido é o primeiro a sair.
Quando usar: Adequada para undo, chamadas de função, parsing e backtracking.
Pontos de atencao: Acesso restrito ao topo; procurar itens internos não é o foco.
Busca
O(n)
Insercao
O(1)
Alteracao
O(n)
Fila (Queue)
Queue
- C#
- Queue<T>
- Implementacao
- coleção FIFO
Resumo: Estrutura em que o primeiro item inserido é o primeiro a sair.
Quando usar: Boa para processamento em ordem de chegada, buffers e filas de trabalho.
Pontos de atencao: Acesso eficiente só nas extremidades; buscar no meio continua caro.
Busca
O(n)
Insercao
O(1)
Alteracao
O(n)
Fila Circular
Circular Queue
- C#
- custom CircularQueue
- Implementacao
- buffer circular
Resumo: Fila limitada implementada sobre um array em anel para reaproveitar espaço.
Quando usar: Faz sentido em buffers de IO, filas com capacidade fixa e sistemas embarcados.
Pontos de atencao: Exige controle cuidadoso de head, tail e estado cheio ou vazio.
Busca
O(n)
Insercao
O(1)
Alteracao
O(n)
Deque
Deque
- C#
- custom Deque
- Implementacao
- duas extremidades
Resumo: Fila de dupla extremidade, com inserção e remoção eficientes na frente e no fim.
Quando usar: Útil para janelas deslizantes, algoritmos monotonic queue e pilha ou fila flexível.
Pontos de atencao: A API cresce e a implementação precisa preservar bem as duas pontas.
Busca
O(n)
Insercao
O(1)
Alteracao
O(n)
Skip List
Skip List
- C#
- custom SkipList
- Implementacao
- listas encadeadas em níveis
Resumo: Lista ordenada em múltiplos níveis com saltos probabilísticos para acelerar buscas e inserções.
Quando usar: Interessante quando se quer busca próxima de O(log n) com uma estrutura encadeada e balanceamento simples.
Pontos de atencao: Depende de aleatoriedade e usa mais ponteiros que uma lista ligada tradicional.
Busca
O(log n)
Insercao
O(log n)
Alteracao
O(log n)
Árvore Binária de Busca
Binary Search Tree
- C#
- custom BinarySearchTree
- Implementacao
- árvore binária ordenada
Resumo: Árvore binária em que a ordem dos valores permite navegar por comparação.
Quando usar: Boa para manter dados ordenados com consultas e inserções frequentes.
Pontos de atencao: Sem balanceamento, pode degradar para comportamento linear.
Busca
O(log n)
Insercao
O(log n)
Alteracao
O(log n)
Árvore AVL
AVL Tree
- C#
- custom AvlTree
- Implementacao
- árvore balanceada
Resumo: BST auto-balanceada que usa rotações para manter altura controlada.
Quando usar: Indicada quando a garantia de busca O(log n) é mais importante que simplicidade.
Pontos de atencao: Inserção e remoção são mais complexas por causa do rebalanceamento.
Busca
O(log n)
Insercao
O(log n)
Alteracao
O(log n)
Heap (Min/Max)
Heap
- C#
- PriorityQueue<T>
- Implementacao
- heap binário
Resumo: Árvore quase completa usada para priorizar o menor ou maior elemento.
Quando usar: Ideal para filas de prioridade, escalonamento e seleção incremental.
Pontos de atencao: Ótimo para topo, mas não para busca arbitrária ordenada.
Busca
O(n)
Insercao
O(log n)
Alteracao
O(log n)
Trie
Trie
- C#
- custom Trie
- Implementacao
- árvore de prefixos
Resumo: Árvore especializada para armazenar chaves por prefixos compartilhados.
Quando usar: Muito útil para autocomplete, dicionários e busca por prefixo.
Pontos de atencao: Pode consumir bastante memória quando o alfabeto ou as chaves crescem.
Busca
O(m)
Insercao
O(m)
Alteracao
O(m)
Tabela Hash
Hash Table
- C#
- Dictionary<TKey,TValue>
- Implementacao
- hash buckets
Resumo: Mapa de chaves para posições calculadas por função hash.
Quando usar: Excelente para lookup médio O(1), caches e dicionários por chave.
Pontos de atencao: Colisões e redimensionamento afetam memória e custo real.
Busca
O(1)
Insercao
O(1)
Alteracao
O(1)
Grafo
Graph
- C#
- custom Graph
- Implementacao
- lista de adjacência
Resumo: Conjunto de vértices conectados por arestas, dirigido ou não.
Quando usar: Base para rotas, dependências, redes sociais e problemas de conectividade.
Pontos de atencao: A modelagem e os algoritmos ficam mais complexos que em estruturas lineares.
Busca
O(V+E)
Insercao
O(1)
Alteracao
O(1)