Este repositório contém implementações de diversas estruturas de dados em Java, baseadas no livro "Estruturas de Dados" de Valter Castelhano de Oliveira. O projeto serve como um recurso educacional para estudantes e desenvolvedores interessados em aprender sobre estruturas de dados fundamentais.
O repositório inclui as seguintes implementações:
- Implementação de lista encadeada simples
- Classes principais:
No.java
: Implementação do nó da listaLista.java
: Operações básicas da lista ligadaCliente.java
: Classe modelo para exemplo práticoCadastroCliente.java
: Exemplo de aplicação com cadastro de clientes
- Implementação básica de árvore binária
- Classes principais:
No.java
: Implementação do nó da árvoreArvoreBinaria.java
: Operações básicas da árvoreExemploArvoreBinaria.java
: Demonstração de uso
- Implementação de BST com operações completas
- Classes principais:
No.java
: Implementação do nó da árvoreArvoreBinariaBusca.java
: Implementação das operações de BSTExemploABB.java
: Exemplo de uso com operações de inserção, busca e remoção
- Implementação de árvore AVL com balanceamento automático
- Classes principais:
No.java
: Implementação do nó AVL com fator de balanceamentoArvoreAVL.java
: Implementação completa com rotações e balanceamentoTesteArvoreAVL.java
: Suite de testes e exemplos de uso
- Documentação adicional:
readme-visualizacao-arvore.md
: Guia para visualização da estrutura da árvore
/teste-arvore-gpt
: Implementações experimentais e testes adicionais/arvore-pti
: Variações e implementações alternativas
- Implementação de pilha com duas abordagens diferentes
- Classes principais:
PilhaInterface.java
: Interface com operações básicas da pilhaPilhaArray.java
: Implementação usando arrayPilhaEncadeada.java
: Implementação usando lista encadeadaExemploPilha.java
: Demonstração de uso das implementações
- Implementação de fila com duas abordagens diferentes
- Classes principais:
FilaInterface.java
: Interface com operações básicas da filaFilaArray.java
: Implementação usando array circularFilaEncadeada.java
: Implementação usando lista encadeadaExemploFila.java
: Demonstração de uso das implementações
- Java Development Kit (JDK) 8 ou superior
- IDE Java de sua preferência (opcional)
- Terminal/Prompt de comando
-
Clone este repositório:
git clone https://github.com/seu-usuario/estruturas-dados-java.git cd estruturas-dados-java
-
Escolha a estrutura de dados que deseja testar e navegue até seu diretório:
cd nome-da-estrutura/
-
Compile o arquivo Java desejado:
javac NomeDoArquivo.java
-
Execute o programa:
java NomeDoArquivo
cd lista-ligada
javac CadastroCliente.java
java CadastroCliente
cd arvore-avl
javac TesteArvoreAVL.java
java TesteArvoreAVL
cd arvore-binaria-busca
javac ExemploABB.java
java ExemploABB
cd pilha
javac ExemploPilha.java
java ExemploPilha
cd fila
javac ExemploFila.java
java ExemploFila
.
├── lista-ligada/ # Lista encadeada simples
│ ├── Lista.java # Implementação da lista
│ ├── No.java # Implementação do nó
│ └── CadastroCliente.java # Exemplo prático
├── arvore-binaria/ # Árvore binária básica
│ ├── ArvoreBinaria.java # Implementação da árvore
│ └── ExemploArvoreBinaria.java # Demonstração
├── arvore-binaria-busca/ # Árvore binária de busca
│ ├── ArvoreBinariaBusca.java # Implementação BST
│ └── ExemploABB.java # Exemplo de uso
├── arvore-avl/ # Árvore AVL
│ ├── ArvoreAVL.java # Implementação com balanceamento
│ └── TesteArvoreAVL.java # Testes e exemplos
├── pilha/ # Implementações de Pilha
│ ├── PilhaInterface.java # Interface da pilha
│ ├── PilhaArray.java # Implementação com array
│ ├── PilhaEncadeada.java # Implementação encadeada
│ └── ExemploPilha.java # Demonstração
├── fila/ # Implementações de Fila
│ ├── FilaInterface.java # Interface da fila
│ ├── FilaArray.java # Implementação com array
│ ├── FilaEncadeada.java # Implementação encadeada
│ └── ExemploFila.java # Demonstração
└── README.md # Este arquivo
- Inserção no início e fim
- Remoção por posição
- Busca por elemento
- Exemplo prático com cadastro de clientes
- Inserção ordenada
- Remoção com reorganização
- Busca eficiente
- Percursos em ordem, pré-ordem e pós-ordem
- Balanceamento automático
- Rotações simples e duplas
- Fator de balanceamento
- Visualização da estrutura da árvore
- Duas implementações: array e lista encadeada
- Operações básicas:
- push (empilhar)
- pop (desempilhar)
- peek (consultar topo)
- isEmpty (verificar se está vazia)
- isFull (verificar se está cheia - versão array)
- Tratamento de exceções para operações inválidas
- Duas implementações: array circular e lista encadeada
- Operações básicas:
- enqueue (enfileirar)
- dequeue (desenfileirar)
- peek (consultar primeiro)
- isEmpty (verificar se está vazia)
- isFull (verificar se está cheia - versão array)
- Array circular para melhor eficiência de espaço
- Tratamento de exceções para operações inválidas
Contribuições são bem-vindas! Sinta-se à vontade para:
- Abrir issues reportando bugs
- Sugerir melhorias
- Enviar pull requests com novas implementações
- Adicionar mais exemplos e documentação
- Livro: "Estruturas de Dados" - Valter Castelhano de Oliveira
- Documentação Java
- Recursos adicionais sobre AVL:
arvore-avl/readme-visualizacao-arvore.md
- Este README foi gerado por IA