-
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
-
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.
-
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#).
-
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.
-
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.
-
Conjuntos e Dicionários
- Conjuntos (Sets): Operações: união, interseção, diferença.
- Mapas/Dicionários (HashMaps, HashTables): Estruturas baseadas em chave-valor.
-
Á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.
-
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).
-
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.
-
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.
-
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.
-
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.
-
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.