Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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).

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

@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.

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...