Ir ao conteúdo
  • Cadastre-se
RorschachVII

Java Função void MoveMenor(TipoLista Lista) que acha o menor elemento da lista

Recommended Posts

Preciso de uma ajuda com a tal situação:

Um código em Java que tem a função void MoveMenor(TipoLista Lista) que o usuário vai digitar vários elementos numa lista e essa função vai achar o menor valor e colocar ele no inicio da lista. Deverá fazer manipulação dos apontadores e imprimir cada passo do mesmo.

 

import java.util.Scanner;

public class TesteLista {

    private static class Lista {
        public int num;
        public Lista prox;
        public Lista ant;
    }

public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        Lista inicio = null;
        Lista fim = null;
        Lista aux;
        Lista anterior;


(Embaixo tenho um menu com opções de inserir o elemento no início, fim, remover, esvaziar e removê-lo).

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 31/03/2018 às 15:19, RorschachVII disse:

Preciso de uma ajuda com a tal situação

Fala ai RorschachVII, nao consegui entender aonde é que esta a sua duvida? o que seria a tal situação?

 

No aguardo

Att

Max

Compartilhar este post


Link para o post
Compartilhar em outros sites

@maxdesa E aí, beleza? Estou escrevendo um código onde preciso inserir um número no começo da lista e no fim dela. Mas preciso de uma função void que seleciona o menor número da lista e o move para o inicio, por exemplo:

50 -> 30 -> 5 -> 27 -> null

Quando eu selecionar a função de mover o menor número, ele tem que fazer isso:

5 -> 50 -> 30 -> 27 -> null

Vou ter 4 switch case: o de inserir no início, no fim, verificar toda a lista e mover o menor número para o início.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi.

Porque  o código tem que ser escrito de uma certa forma ? E se você já tem o código pronto, qual é a dificuldade ? 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Boko Moko A dificuldade é que nesse meu código quando eu adiciono um número na lista ele não está pegando o menor valor, ele sempre mostra o último número que digitei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RorschachVII Existe um ditado que um famoso programador português uma vez disse "Em se programando ... tudo dá". Ou seja, em se consertando, tudo dá. Só que tem que ser por partes porque o seu código tá um spagethi danado. Recomendo modularizar mais os programas de modo que ao consertar um módulo, você Não afeta outro que está funcionando.

 

 

Na rotina de inclusão, seu programa inteligentemente testa o novo valor a ser inserido na lista. Se ele for menor do que o menor valor, o menor valor passa a ser esse valor novo. Excelente. Como todo valor que entrar na lista passa por aí, todo valor vai ser testado contra o menor valor. Ou seja, o menor valor estará na variável "menor". Só que não basta isso.


O ideal seria você deixar numa variável do tipo Lista o elo da lista que contém o valor menor.


Uma coisa : você criou uma classe TipoLista que não é utilizada. Qual foi a ideia ? Se não se lembra porque, remova-a.

 

Outra coisa: A lista é para ser duplamente encadeada ou não ? 
Porque a estrutura da classe Lista está confusa, porém serviria para uma lista duplamente encadeada. Acontece que quando você insere um novo ítem na lista ... não trata os links para o elo anterior. Observe o código e verá que você só modifica o campo num e o campo prox. Veja como a classe Lista está 
 

public class Lista {

	private int num;   /* utilizado */
	private Lista prox; /* utilizado */ 
	private Object ant; /* definido errado e não utilizado */ 
	private Lista menor; /* definido errado e não utiliado */ 
}

Então você fala em lista duplamente encadeada, mas seu programa a trata como se fosse uma lista simples encadeada.
Recomendo modificar a classe para ser lista duplo-encadeada mesmo. Fique ligado no código que insere um novo nó para tratar corretamente os apontadores para o elo anterior.

 

Isso erá facilitar o trabalho de mover para o topo o menor valor.

 

Tente novamente e se precisar de ajuda, avise.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foto de perfil bacana parceiro...

Continue ai com os estudos, sempre acompanho aqui as duvidas tentando aprender também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×