Prévia do material em texto
Atividade 3 Estrutura de Dados
Implemente um projeto no qual serão inseridos números de forma ordenada, e que
atenda as especificações a seguir:
Passo 1: Insira os números [1, 2, 3, 4 e 5] em uma lista - com 5 células;
Passo 2: Remova todos os dados da lista e insira-os em uma Pilha - com 5 células.
Deve-se sempre remover os dados da célula inicial da lista;
Passo 3: Remova os dados da Pilha e insira-os em uma Fila - com 10 células);
Passo 4: Insira os números [6, 7, 8, 9 e 10] na lista;
Passo 5: Repita os passos 2 e 3.
Passo 6: Exiba todos os números que foram inseridos na fila.
Analise a ordem dos números exibidos e verifique se estão na mesma forma que
foram inseridos. Se a exibição foi diferente, justifique o ocorrido.
O programa desenvolvido pelo aluno e a sua justificativa deverá ser postado em um
ambiente virtual. Esse programa será avaliado pelo tutor responsável pela disciplina.
Res:
import
java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> listaNumeros = new ArrayList<>();
Stack<Integer> pilhaNumeros = new Stack<>();
Queue<Integer> filaNumeros = new LinkedList<>();
int i;
//Inserindo os números [1, 2, 3, 4 e 5] na lista
for (i = 1; i <= 5; i++) {
listaNumeros.add(i);
}
System.out.println("Número de elementos da lista: " +
listaNumeros.size());
System.out.println("Seguem os números na lista: ");
while(!listaNumeros.isEmpty()){
//Removendo o próximo elemento da lista e dando para
uma variável temporário
int elementoLista = listaNumeros.remove(0);
//Imprimindo o número da lista na ordem
System.out.printf("%d ", elementoLista);
//Adicionando o elemento da lista à pilha na ordem
pilhaNumeros.push(elementoLista);
}
if (listaNumeros.isEmpty()) {
System.out.println("\nYay, minha lista está vazia!");
} else {
System.out.println("\nOops, deu algo errado, minha
lista tinha que estar vazia.");
}
System.out.println("Número de elementos da pilha: " +
pilhaNumeros.size());
System.out.println("Seguem os números na pilha: ");
while(!pilhaNumeros.isEmpty()) {
//Removendo o elemento da pilha e dando para uma
variável temporária
int elementoPilha = pilhaNumeros.pop();
//Imprimindo o número da pilha na ordem
System.out.printf("%d ", elementoPilha);
//Adicionando o número da piljha à fila na ordem
filaNumeros.add(elementoPilha);
}
if (pilhaNumeros.isEmpty()) {
System.out.println("\nYay, minha pilha está vazia!");
} else {
System.out.println("\nOops, deu algo errado, minha
pilha tinha que estar vazia.");
}
//Verificando o número de elementos na Fila
System.out.println("No momento tenho o seguinte número de
elementos na minha fila: " + filaNumeros.size());
System.out.println("Vamos ver quais são os elementos da
minha fila e em que ordem estão?");
for(Integer numeroFila: filaNumeros){
System.out.printf("%d ", numeroFila);
}
//Repetindo passos 2 e 3 com os números [6, 7, 8, 9 e 10];
//Inserindo os números [6, 7, 8, 9 e 10] na lista
for (i = 6; i <= 10; i++) {
listaNumeros.add(i);
}
System.out.println("\nNúmero de elementos da lista na
segunda rodada de inserção: " + listaNumeros.size());
System.out.println("Seguem os números na lista na segunda
rodada: ");
while(!listaNumeros.isEmpty()){
//Removendo o próximo elemento da lista e dando para
uma variável temporário
int elementoLista = listaNumeros.remove(0);
//Imprimindo o número da lista na ordem
System.out.printf("%d ", elementoLista);
//Adicionando o elemento da lista à pilha na ordem
pilhaNumeros.push(elementoLista);
}
if (listaNumeros.isEmpty()) {
System.out.println("\nYay, minha lista está vazia!");
} else {
System.out.println("\nOops, deu algo errado, minha
lista tinha que estar vazia.");
}
System.out.println("Número de elementos da pilha: " +
pilhaNumeros.size());
System.out.println("Seguem os números na pilha na segunda
rodada: ");
while(!pilhaNumeros.isEmpty()) {
//Removendo o elemento da pilha e dando para uma
variável temporária
int elementoPilha = pilhaNumeros.pop();
//Imprimindo o número da pilha na ordem
System.out.printf("%d ", elementoPilha);
//Adicionando o número da piljha à fila na ordem
filaNumeros.add(elementoPilha);
}
if (pilhaNumeros.isEmpty()) {
System.out.println("\nYay, minha pilha está vazia!");
} else {
System.out.println("\nOops, deu algo errado, minha
pilha tinha que estar vazia.");
}
//Imprimindo tamanho da Fila e os elementos da Fila
System.out.println("O tamanho final da minha fila será de:
" + filaNumeros.size());
System.out.println("Seguem os números na fila em ordem
depois de todas as inserões: ");
for(Integer numeroFila : filaNumeros){
System.out.printf("%d ", numeroFila);
}
}
}
Justificativa:
Resp:
A Lista é ordenada, portanto a ordem em que insiro os elementos será mantida
ao usar um laço para iterar sobre os elementos.
Na Pilha temos o conceito LIFO (Last In First Out - Último a entrar, Primeiro a
Sair), portando as iterações irão seguir esse conceito.
E na Fila usamos o FIFO (First In First Out - Primeiro a entrar, Primeiro a Sair), o
que também será respeitado ao iterar sobre está estrutura.
Na nossa ordem primeiro passa por uma Lista, depois colocamos os elementos
dessa Lista em ordem em uma Pilha, esvaziando a Lista e depois os colocamos
em uma Fila, deixado a Pilha vazia.