Este projeto implementa diferentes estruturas de dados dinâmicas em Java, incluindo:
- Filas circulares com redimensionamento automático.
- Filas baseadas em arrays com estratégias de crescimento incremental e duplicativo.
- Filas encadeadas utilizando listas ligadas.
- Pilha encadeada para manipulação de dados em ordem LIFO.
- FilaCircular: Implementação baseada em array circular, com redimensionamento dinâmico por duplicação.
- FilaDuplicacao: Fila com crescimento dinâmico utilizando estratégia de duplicação.
- FilaIncremento: Similar à anterior, mas expande o array com um incremento fixo.
- FilaEncadeada: Fila baseada em lista ligada.
- PilhaEncadeada: Implementação de pilha com lista ligada.
- FilaVaziaException: Exceção personalizada para filas vazias.
- IFila: Interface para padronizar a implementação das filas.
- No: Representa um nó para listas encadeadas.
O projeto contém classes de teste para validação das estruturas implementadas. Para executar os testes:
- Compile os arquivos Java:
javac *.java - Execute a classe de teste:
java TesteEstruturasEncadeadas
- TesteEstruturasEncadeadas: Testa filas e pilhas, incluindo um algoritmo para inverter a ordem dos elementos de uma fila utilizando uma pilha.
- TesteFila (na FilaCircular): Testa a inserção, remoção e redimensionamento automático da fila circular.
FilaEncadeada fila = new FilaEncadeada();
fila.enqueue("A");
fila.enqueue("B");
fila.enqueue("C");
System.out.println(fila.first()); // Saída: A
System.out.println(fila.dequeue()); // Remove APilhaEncadeada pilha = new PilhaEncadeada();
pilha.push("1");
pilha.push("2");
pilha.push("3");
System.out.println(pilha.peek()); // Saída: 3
System.out.println(pilha.pop()); // Remove 3