Ir ao conteúdo

Posts recomendados

Postado

Boa noite! Quando tento imprimir no case 2 no último while fica dando loop. Alguém consegue resolver?

package projeto;

import java.util.Scanner;

public class Listas {

    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 menor;

        int op;

        do {
            System.out.println("\nMenu de Opções\n");
            System.out.println("1- Inserir");
            System.out.println("2- Mover menor");
            System.out.println("3- Sair");
            System.out.println("Digite a sua opção:");
            op = entrada.nextInt();

            Lista novo;

            switch (op) {
            case 1:

                System.out.println("Digite um número:");
                novo = new Lista();
                novo.num = entrada.nextInt();

                if (inicio == null) {
                    inicio = novo;
                    fim = novo;
                    novo.prox = null;
                    novo.ant = null;
                } else {
                    novo.prox = inicio;
                    inicio.ant = novo;
                    novo.ant = null;
                    inicio = novo;
                }
                System.out.println("\nNúmero inserido. Cosultando lista:");
                aux = inicio;
                while (aux != null) {
                    System.out.print(aux.num + " -> ");
                    aux = aux.prox;
                }
                System.out.println("null");

                break;
            case 2:
                aux = inicio;
                if (inicio == null) {
                    System.out.println("Lista vazia");
                    break;
                }else{
                    menor = inicio;
                }
                menor = inicio;
                while (aux != null) {
                    if (aux.num < menor.num) {
                        menor = aux;
                    }
                    aux = aux.prox;
                }
                while (menor.ant != null) {
                    if (menor.ant != null) {
                        menor.ant.prox = menor.prox;
                        menor.prox = menor.ant;
                    }
                    if (menor.ant.ant != null) {
                        menor.ant.ant.prox = menor;
                        menor.ant = menor.ant.ant;
                        menor.prox.ant = menor;
                    }
                    if (menor == fim) {
                        fim = menor.prox;
                    }
                    while (aux != null) {
                        System.out.print(aux.prox + " -> ");
                        aux = aux.prox;
                    }
                    System.out.println("null");
                }

                break;

            case 3:
                System.exit(0);
                break;
            default:
                System.out.println("Opção inválida!");
                break;
            }

        } while (op != 3);
        entrada.close();
    }
}

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!