Skip to content
Henrique Matheus Alves Pereira edited this page Jan 14, 2025 · 2 revisions

Descrição

Repositório dedicado aos estudos de estrutura de dados em Java.

  1. Estruturas de Dados Básicas

    • Arrays (Vetores): Definição, acesso por índice, vantagens e desvantagens.
    • Strings: Representação, manipulação e armazenamento.
    • Matrizes (Multidimensional Arrays): Matrizes 2D, matrizes esparsas.
  2. Listas

    • Listas Simplesmente Encadeadas: Nós, ponteiros, operações básicas (inserção, remoção, busca).
    • Listas Duplamente Encadeadas: Encadeamento em duas direções, vantagens em comparação com listas simples.
    • Listas Circulares: Ponteiros que se conectam em um ciclo.
    • ArrayList e LinkedList (em linguagens de alto nível como Java/C#).
  3. Pilhas (Stacks)

    • Definição e Propriedades: Estrutura LIFO (Last In, First Out).
    • Operações Básicas: Push, Pop, Peek.
    • Implementações: Com arrays ou listas encadeadas.
    • Aplicações: Expressões matemáticas, recursão, histórico de navegação.
  4. Filas (Queues)

    • Definição e Propriedades: Estrutura FIFO (First In, First Out).
    • Filas Simples: Inserção e remoção em ordem.
    • Filas Circulares: Utilização otimizada de espaço.
    • Filas de Prioridade: Elementos com níveis de prioridade.
    • Deque (Double-Ended Queue): Inserção e remoção em ambas as extremidades.
  5. Conjuntos e Dicionários

    • Conjuntos (Sets): Operações: união, interseção, diferença.
    • Mapas/Dicionários (HashMaps, HashTables): Estruturas baseadas em chave-valor.
  6. Árvores (Trees)

    • Árvores Binárias: Conceitos de raiz, nós, folhas, altura, profundidade.
    • Árvores Binárias de Busca (BST): Inserção, remoção, busca.
    • Árvores Balanceadas: AVL, Red-Black Trees.
    • Heap (Árvores de Prioridade): Min-Heap e Max-Heap.
    • Árvores B e B+: Estruturas para armazenamento em disco.
    • Tries (Árvores Prefixadas): Estruturas para operações com strings.
  7. Grafos (Graphs)

    • Representações: Lista de adjacência, matriz de adjacência.
    • Tipos de Grafos: Não direcionados, direcionados, ponderados, não ponderados.
    • Algoritmos em Grafos: Busca em largura (BFS).
    • Busca em profundidade (DFS).
    • Algoritmos de caminhos mínimos (Dijkstra, Bellman-Ford).
    • Algoritmos de componentes conexos.
    • Algoritmos de árvores geradoras mínimas (Kruskal, Prim).
  8. Tabelas Hash (Hash Tables)

    • Definição: Hashing, funções de hash.
    • Colisões: Métodos de resolução: encadeamento, endereçamento aberto.
    • Aplicações: Busca rápida, implementações de mapas/dicionários.
  9. Estruturas de Dados Avançadas

    • Skip Lists: Listas encadeadas com níveis para busca rápida.
    • Union-Find (Disjoint Set Union): Para problemas de componentes conexos.
    • Segment Trees e Fenwick Trees (Binary Indexed Trees): Para consultas e atualizações em intervalos.
    • K-D Trees: Para organização espacial de dados multidimensionais.
  10. Estruturas de Dados para Fluxo de Dados

    • Filas de Prioridade com Chaves Dinâmicas: Usadas em algoritmos como Dijkstra.
    • Filas Deslizantes: Estruturas otimizadas para janelas móveis.
    • Estruturas Probabilísticas: Bloom Filter e Count-Min Sketch.
  11. Aplicações Específicas

    • Buffers: Estruturas de dados para processamento contínuo de dados.
    • Caches: Implementação com LRU (Least Recently Used).
    • Estruturas de Dados Persistentes: Armazenamento de versões históricas de dados.
  12. Estruturas de Dados Paralelas e Concorrentes

    • Filas Concorrentes: Utilizadas em sistemas multithread.
    • Árvores Concorrentes: Estruturas para alta performance em ambientes paralelos.
    • Filas Lock-Free e Wait-Free: Estruturas para evitar contenção de threads.

Clone this wiki locally