Ajuda com Lista Simplesmente Encadeada em Java

2 respostas
L

Tenho um exercício de java para ser feito e estou a dois dias tentando resolver o mesmo.
Já assisti uns 3 cursos no Youtube porem não consigo ter ideias de como resolve-lo.
Se alguém puder ajudar, segue o exercício:

Faça um programa para armazenar e manipular uma lista de alunos, contendo informações sobre o seu RA, nome e idade. A implementação deverá utilizar a estrutura de dados lista simplesmente encadeada.

O programa deverá exibir o seguinte menu de opções para o usuário:

1 – Inserir aluno
Solicite ao usuário que informe o RA, nome e idade do aluno, e o insira na lista. A inserção deverá ser feita por ordem alfabética do nome.


2- Localizar aluno
Solicite ao usuário que informe o RA de um aluno para pesquisa. Caso o aluno se encontre na lista, imprima todas as suas informações. Caso contrário, exiba uma mensagem informando que o aluno não se encontra na lista. As informações deverão ser exibidas com o seguinte formato:

RA: Nome: Idade: anos


3 – Excluir aluno
Solicite ao usuário que informe o RA de um aluno. Caso o aluno se encontre na lista, exclua o mesmo da lista. Caso contrário, exiba uma mensagem informando que o aluno não se encontra na lista


4 – Imprimir lista

O programa deverá exibir a listagem de alunos de acordo com o seguinte formato:

[A]

RA: 190090 Nome: Alexandre Idade: 18 anos
RA: 187820 Nome: André Idade: 20 anos

[B]

RA: 230078 Nome: Bruno Idade: 25 anos

[C]

RA: 766571 Nome: Carla Idade: 30 anos

Observação : deverão ser exibidas as letras iniciais dos nomes somente se existirem alunos cujo nome inicie com a letra em questão.

2 Respostas

Dragoon

Coloque algum código que tu já fez. Sem nada, parece que temos que fazer o seu trabalho de faculdade, desculpa a sinceridade.

L

Jovem, muito obrigado pelo feedback;
Então ainda não encontrei uma forma de inserir os alunos em ordem alfabetica.
segue codigo:

[Aluno.java]

public class Aluno {
private int ra;
private String nome;
private int idade;

public Aluno(){}

public Aluno(int ra, String nome, int idade ){
    this.ra = ra;
    this.nome = nome;
    this.idade = idade;
}

public int getRa() {
    return ra;
}

public void setRa(int ra) {
    this.ra = ra;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public int getIdade() {
    return idade;
}

public void setIdade(int idade) {
    this.idade = idade;
}

@Override
public String toString() {
    return "Aluno" + "RA:" + ra + ", Nome:" + nome + ", Idade:" + idade;
}


}

[Celula.java]

public class Celula {

private Celula proximo;
private Aluno valor;

public Celula getProximo() {
    return proximo;
}

public void setProximo(Celula proximo) {
    this.proximo = proximo;
}

public Aluno getValor() {
    return valor;
}

public void setValor(Aluno valor) {
    this.valor = valor;
}

}

[ListaEncadeada.java]

public class ListaEncadeada {

private Celula primeiro;
private Celula ultimo;
private Celula posicaoAtual;

public void adicionar(Aluno valor) {
    Celula celula = new Celula();
    celula.setValor(valor);
    if (primeiro == null && ultimo == null) {
        primeiro = celula;
        ultimo = celula;
    } else {
        ultimo.setProximo(celula);
        ultimo = celula;
    }
}

    public boolean temProximo() {
    if (primeiro == null) {
        return false;
    } else if (posicaoAtual == null) {
        posicaoAtual = primeiro;
        return true;
    } else {
        boolean temProximo = posicaoAtual.getProximo() != null ? true : false;
        posicaoAtual = posicaoAtual.getProximo();
        return temProximo;
    }
}

public Celula getPosicaoAtual() {
    return this.posicaoAtual;
}

}

[Principal.java]

import java.util.Scanner;

public class Principal {

public static void main(String[] args) {
    ListaEncadeada listaEncadeada = new ListaEncadeada();
    Principal principal = new Principal();
    Scanner entrada = new Scanner(System.in);

    int opcao;
    do {
        principal.Menu();
        opcao = entrada.nextInt();

        switch (opcao) {
            case 1:
                System.out.print("Qual o RA do aluno: ");
                int ra = entrada.nextInt();
                System.out.print("Qual o nome do aluno: ");
                entrada.nextLine();
                String nome = entrada.nextLine();
                System.out.print("Qual a idade do aluno: ");
                int idade = entrada.nextInt();

                Aluno a1 = new Aluno(ra, nome, idade);
                listaEncadeada.adicionar(a1);
                break;
            
            case 4:
                while (listaEncadeada.temProximo()){
                    System.out.println(listaEncadeada.getPosicaoAtual().getValor());
                }
                break;
                
            default:
                System.out.println("Opção inválida.");
        }
    } while (opcao != 0);

    }

public static void Menu() {
    System.out.println("\tMenu: ");
    System.out.println("0. Fim");
    System.out.println("1. Adicionar aluno");
    System.out.println("2. Localizar aluno");
    System.out.println("3. Excluir aluno");
    System.out.println("4. Imprime lista de alunos");
   }
 }
Criado 19 de junho de 2016
Ultima resposta 20 de jun. de 2016
Respostas 2
Participantes 2