Dúvida em exercício de Lista Encadeada (Ponteiros)

2 respostas
java
P

pessoas, não sei como resolver esse exercício, pois não sei manipular lista encadeada direito. se alguém puder me ajudar num exercício eu agradeço.

//(Ponteiros) Supondo as declarações:

public class ListaPessoas {

    public String nome;
    public int idade;
    public double peso;
    public int altura;
    public ListaPessoas proxs;

    public ListaPessoas(String n, int i, double p, int a, ListaPessoas ps) {
        nome = n;
        idade = i;
        peso = p;
        altura = a;
        proxs = ps;
    }

}

public static void ordena(ListaPessoas lis, int comoComparar) {
        /* 
        Função que ordena CRESCENTEMENTE o conteúdo da lista lis, considerando: o atributo
        nome quando o parâmetro comoComparar = 1, idade quando comoComparar = 2, peso quando
        comoComparar = 3, e considerando o atributo altura quando comoComparar = 4.
        */
}

no caso eu tenho q implementar esse método ordena. se alguém me ensinasse ao menos em um dos casos (ex.: comoComparar = 1) já ajudaria bastante. minha dúvida não é nem com respeito a comparação, mas como ordenar uma lista encadeada. com vetor eu faço tranquilo, mas encadeamento é um pouco diferente né.

2 Respostas

Rodrigo_Void

Olá,
Primeiro se atende ao fato de que a classe “ListaPessoas” que vc criou não representa uma estrutura de lista e sim, um objeto desta classe representa somente UMA pessoa.
Se entendei bem, renomeie esta classe para “Pessoa” e depois crie um ArrayList com vários objetos de Pessoa, ai podes partir para ordenação implementando um Comparator.

P

então, mas no caso não posso usar ArrayList. seria pra implementar uma lista simplesmente encadeada com cada elemento contendo 4 infos (nome, idade, peso, atura) e apontando para UM próximo. no caso o q eu poderia fazer é criar um No…

public class No {

    public ListaPessoas info;
    public No proxs;

    public No(ListaPessoas ps) {
        info = ps;
        prox = null;
}

mas eu não saberia implementar o resto. não estou conseguindo incluir pessoas na lista.

pra inserir eu fiz assim na classe ListaPessoas…

public boolean insere(No no) {
        if (vazia()) {
            primeiro = no;
        } else {
            no.proxs = primeiro;
            primeiro = no;
        }
        qtdPessoas++;
        return true;
}
Criado 23 de março de 2016
Ultima resposta 27 de mar. de 2016
Respostas 2
Participantes 2