Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO: Análise e desenvolvimento de sistemas POLO DE APOIO PRESENCIAL: Higienópolis SEMESTRE: 3° semestre COMPONENTE CURRICULAR / TEMA: ESTRUTURA DE DADOS NOME COMPLETO DO ALUNO: MARIA BEATRIZ DA SILVA SOUZA TIA: 22516042 NOME DO PROFESSOR: THIAGO DONIZETTI DOS SANTOS Classe Vetor: public class Vetor<T> { private T[] elementos; private int tamanho; @SuppressWarnings("unchecked") public Vetor(int capacidade) { this.elementos = (T[]) new Object[capacidade]; this.tamanho = 0; } public boolean adiciona(T elemento) { if(tamanho < elementos.length) { elementos[tamanho] = elemento; tamanho++; return true; } return false; } public T remove(int posicao) { if (posicao >= 0 && posicao < tamanho) { T elementoRemovido = elementos[posicao]; for (int i = posicao; i < tamanho - 1; i++) { elementos[i] = elementos[i + 1]; } tamanho--; return elementoRemovido; } return null; } public int tamanho() { return tamanho; } public T get(int posicao) { if (posicao >= 0 && posicao < tamanho) { return elementos[posicao]; } return null; } } Classe Pilha: public class Pilha<T> { private Vetor<T> vetor; public Pilha(int capacidade) { this.vetor = new Vetor<>(capacidade); } public boolean empilha(T elemento) { return vetor.adiciona(elemento); } public T desempilha() { if (this.estaVazia()) { return null; } return vetor.remove(vetor.tamanho() - 1); } public T topo() { if (this.estaVazia()) { return null; } return vetor.get(vetor.tamanho() - 1); } public boolean estaVazia() { return vetor.tamanho() == 0; } } Classe Fila: public class Fila<T> { private Vetor<T> vetor; public Fila(int capacidade) { this.vetor = new Vetor<>(capacidade); } public boolean enfileira(T elemento) { return vetor.adiciona(elemento); } public T desenfileira() { if (this.estaVazia()) { return null; } return vetor.remove(0); } public T primeiro() { if (this.estaVazia()) { return null; } return vetor.get(0); } public boolean estaVazia() { return vetor.tamanho() == 0; } } Classe Teste: import Fila.Fila; import Fila.Pilha; public class Teste { public static void main(String[] args) { Fila<String> fila = new Fila<String>(5); // Inserindo nomes na fila fila.enfileira("João"); fila.enfileira("Maria"); fila.enfileira("Ana"); fila.enfileira("Pedro"); fila.enfileira("Lucas"); System.out.println("Primeiro da fila antes da inversão: " + fila.primeiro()); inverteFila(fila); System.out.println("Primeiro da fila após a inversão: " + fila.primeiro()); } public static <T> void inverteFila(Fila<T> fila) { Pilha<T> pilhaAuxiliar = new Pilha<T>(fila.estaVazia() ? 10 : 5); while (!fila.estaVazia()) { pilhaAuxiliar.empilha(fila.desenfileira()); } while (!pilhaAuxiliar.estaVazia()) { fila.enfileira(pilhaAuxiliar.desempilha()); } } }
Compartilhar