Buscar

Atividade - Estrutura de Dados 4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

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()); 
 } 
 } 
}

Continue navegando