Olá pessoal, o professor passou um algoritmo de uma lista que insere elementos no final da lista e remove no início(ou seja, uma fila), mas agora ele quer que a gente insira um método que remova no final. Eu entendo a lógica, tenho que percorrer até o ultimo elemento e apontá-lo como null, mas não estou conseguindo passar isto pro código, ele disse que não é pra usar array, que quer que façamos tudo no "braço" mesmo...
Segue abaixo os códigos:
public class Lista {
private Pessoa primeiro;
public Lista(){
this.primeiro = null;
}
public void inserir(Pessoa pessoa){
if(this.primeiro == null)
this.primeiro = pessoa;
else{
Pessoa iterador;
iterador = this.primeiro;
for(; iterador.getProximo()!= null; iterador = iterador.getProximo());
iterador.setProximo(pessoa);
}
}
public void remover(){
if(this.primeiro != null){
this.primeiro = this.primeiro.getProximo();
}
}
public void removerNoFinal(){
Pessoa iterador;
if(this.primeiro!= null){
iterador = this.primeiro;
for(; iterador.getProximo()!= null; iterador = iterador.getProximo()); // vai até o ultimo elemento
iterador = null; // elemina o ultimo elemento
}
}
public Pessoa getPrimeiro() {
return primeiro;
}
public void setPrimeiro(Pessoa primeiro) {
this.primeiro = primeiro;
}
}
public class Pessoa {
private Pessoa proximo;
private String nome;
public Pessoa(){
this.proximo = null;
this.nome = "";
}
public Pessoa getProximo() {
return proximo;
}
public void setProximo(Pessoa proximo) {
this.proximo = proximo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String toString(){
return this.getNome();
}
}
import java.util.Scanner;
public class Principal {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
Lista StudentsGold = new Lista();
Pessoa iterador;
int op;
do{
System.out.println("Digite 1 para inserir uma pessoa na lista");
System.out.println("Digite 2 para remover uma pessoa no inicio da lista");
System.out.println("Digite 3 para remover uma pessoa no final da lista");
System.out.println("Digite 4 para mostrar a lista na tela");
System.out.println("Digite 0 para sair");
op = input.nextInt();
switch(op){
case 4:
{
if(StudentsGold.getPrimeiro()!= null){
for(iterador = StudentsGold.getPrimeiro(); iterador.getProximo()!= null;iterador = iterador.getProximo())
System.out.println(iterador);
System.out.println(iterador);
}
else
System.out.println("Lista Vazia");
break;
}
case 2:{
StudentsGold.remover();
break;
}
case 1:
{
System.out.println("Digite o nome do Aluno");
iterador = new Pessoa();
iterador.setNome(input.next());
StudentsGold.inserir(iterador);
break;
}
case 3:{
StudentsGold.removerNoFinal();
break;
}
}
}while(op!=0);
}
}
Não estou conseguindo remover o último elemento :cry:
