jueves, 13 de agosto de 2015

Traslación de lista simple a arreglo, pila, cola y lista circular en java

Generar una lista simple con inserción al final, de n elementos y múltiplos de m, luego pasar a: 1) un arreglo, 2) una lista circular, 3) una pila, 4) una cola.

·         Código aquí


package deberTraslacion;

import java.util.Scanner;

public class DeberTraslacion {

    public static int validarNumero() {
        Scanner leer = new Scanner(System.in);
        int valorNum = 0;
        boolean numero = false;

        while (!numero) {
            try {
                String cadena = leer.nextLine();
                valorNum = Integer.parseInt(cadena);
                numero = true;
            } catch (Exception e) {
                System.out.println("Error, ingrese un numero");
            }
        }
        return valorNum;
    }

    public static class Nodo {

        int dato;
        Nodo sig;
    }

    public static void main(String[] args) {
        boolean salir = false;
        int opMenu;
        Scanner leer = new Scanner(System.in);
        //insercion al final
        System.out.println("Generación de una lista simple con inserción al final");
        System.out.print("Ingrese n :");
        int n = validarNumero();
        System.out.print("Ingrese m :");
        int m = validarNumero();
//genero lista
        Nodo top = null;
        Nodo ultimo = top;
        for (int i = 1; i <= n; i++) {
            Nodo temp = new Nodo();
            temp.dato = i * m;
            temp.sig = null;
            if (top == null) {// primer nodo
                top = temp;
            } else {
                ultimo.sig = temp;
            }
            ultimo = temp;

        }
        Nodo temp = top;
        System.out.println("Imprimir la lista simple:");
        while (temp != null) {
            System.out.print(" "+temp.dato);
            temp = temp.sig;
        }
        System.out.println("");
        ////////////////////////////////////////////////////      
        Nodo tempO = top;
        String menuTraslacion = "\nMenu" + "\n Pasar a un:" + "\n 1.Arreglo" + "\n 2.Lista circular" + "\n 3.Pila" + "\n 4.Cola" + "\n 5.Salir";

        do {
            System.out.println(menuTraslacion);
            opMenu = validarNumero();
            switch (opMenu) {
                case 1: {
                    tempO = top;
                    int vec[] = new int[n];
                    for (int i = 0; i < n; i++) {
                        vec[i] = tempO.dato;
                        tempO = tempO.sig;//por que tiene que pasar al siguiente elemento
                    }
                    System.out.println("La lista simple pasada a un arreglo es:");
                    for (int i = 0; i < n; i++) {
                        System.out.print(" " + vec[i]);

                    }
                    System.out.println("");
                }
                break;
                case 2: {
                    tempO = top;
                    Nodo top1 = null;
                    Nodo ultimo1 = top1;

                    //insertar al inicio de la lista circular
                    for (int i = 1; i <= n; i++) {

                        Nodo temp1 = new Nodo();
                        temp1.dato = tempO.dato;
                        tempO = tempO.sig;
                        if (top1 == null) {
                            temp1.sig = temp1;
                            ultimo1 = temp1;
                        } else {
                            temp1.sig = top1;
                            ultimo1.sig = temp1;
                        }
                        top1 = temp1;
                    }
                    //Para imprimir
                    System.out.println("La lista simple pasada a una lista circular es:");

                    Nodo temp1 = top1;
                    while (temp1.sig != top1) {   //imprime lista
                        System.out.print(" " + temp1.dato);
                        temp1 = temp1.sig;
                    }
                    System.out.print(" " + temp1.dato);
                    System.out.println("");
                }
                break;
                case 3: {
                    tempO = top;
                    Nodo top2 = null;//Mi top2 sera mi pila de esta opcion
                    for (int i = 1; i <= n; i++) {
                        Nodo temp2 = new Nodo();
                        temp2.dato = tempO.dato;
                        tempO = tempO.sig;
                        if (top2 == null) {
                            temp2.sig = null;

                        } else {
                            temp2.sig = top2;

                        }
                        top2 = temp2;
                    }

                    Nodo temp2 = top2;
                    System.out.println("La lista simple pasada a una pila es:");
                    while (temp2 != null) {   //imprime lista
                        System.out.print(" " + temp2.dato);
                        temp2 = temp2.sig;
                    }
                    System.out.println("");
                }
                break;
                case 4: {
                    tempO = top;
                    Nodo top3 = tempO; // la cola es FIFO
                    //Para imprimir la cola  
                    Nodo temp3 = top3;
                    System.out.println("La lista simple pasada a una cola es:");

                    while (temp3 != null) {
                        System.out.print(" " + temp3.dato);
                        temp3 = temp3.sig;
                    }
                    System.out.println("");
                }
                break;
                case 5: {
                    salir = true;
                    System.out.println("Fin de ejecucion");
                }
                break;
                default:
                    System.out.println("Error : La opcion no existe... ");
                    break;
            }
        } while (!salir);

    }


}
Corrida

No hay comentarios:

Publicar un comentario