Programación General > Java

 Ordenar e invertir una lista ligada

(1/1)

Diamante_Loco:
Hola buenas tardes/noches
ps mi duda es la siguiente:

Tengo este programa de Listas Doblemente Ligadas
Inserta e elimina nodos
imprime la lista de izquierda a derecha.

lo q quiero que tmb haga es ordenar la lista
por ejemplo si esta es la lista:
4 5 1 0 8
q la ordene d menor a mayor:
0 1 4 5 8
pero no tengo mucha idea d como hacerloo

la otra duda es que invierta la lista
por ejemplo si esta es la lista:
4 5 1 0 8

al momento de invertir la lista quedaria asi:
8 0 1 5 4

pero tampoco me salee Confused

Les pongo el codigo que tengo :

espero q me puedan ayudar!


--- Código: Java ---   import java.io.*; class Nodo{   public int info;   public Nodo sig, ant;      public Nodo(int x)   {      info = x;      sig = ant = null;   }} class ListaDoblementeLigada{   private Nodo inicio, fin;     public ListaDoblementeLigada()    {       inicio = fin = null;    }       public void inserta(int x)    {       Nodo temp = new Nodo(x);       if(inicio == null && fin == null)          inicio = fin = temp;          else          {             temp.ant = fin;             fin.sig = temp;             fin = temp;          }    }       public void recorreIzq()    {       Nodo aux;       aux = inicio;       while(aux != null)       {          System.out.print(aux.info + "   ");          aux = aux.sig;       }    }              public void elimina()    {       Nodo aux, aux2;       aux = aux2 = fin;       fin = fin.ant;       aux2 = fin;       System.out.println("Dato eliminado: " + aux.info);       aux2.sig = null;          aux.ant = null;    }       public void menu()    {       System.out.println("");       System.out.println("Menu");       System.out.println("1.- Insertar");       System.out.println("2.- Recorrer de Izquierda a Derecha");       System.out.println("3.- Invertir lista");       System.out.println("4.- Eliminar");       System.out.println("5.- Salir");       System.out.print("Opcion: ");           }    public static void main(String a[])throws IOException    {       InputStreamReader isr = new InputStreamReader(System.in);       BufferedReader entrada = new BufferedReader(isr);              int cantidad, opc, dato;       ListaDoblementeLigada L1 = new ListaDoblementeLigada();       do       {              L1.menu();              opc = Integer.parseInt(entrada.readLine());              if (opc == 1)       {              System.out.print("Cantidad de nodos de la lista 1: ");       cantidad = Integer.parseInt(entrada.readLine());       for(int i = 1; i <= cantidad; i++)           {          System.out.print("Da el dato "+ i + ": ");          dato = Integer.parseInt(entrada.readLine());                    L1.inserta(dato);          }       }              if(opc == 2)L1.recorreIzq();       if(opc == 4)L1.elimina();       }while(opc != 5)  ;    }      }   

robertogt:
Para invertir la lista lo que tenés que hacer es parecido a lo que tienes en


--- Código: Java --- public void recorreIzq()     {        Nodo aux;        aux = inicio;        while(aux != null)        {           System.out.print(aux.info + "   ");           aux = aux.sig;        }     } 
para recorrerla de derecha a izquierda seria algo asi


--- Código: Java --- public void recorreDerecha()     {        Nodo aux;        aux = fin;        while(aux != null)        {           System.out.print(aux.info + "   ");           aux = aux.ant;        }     } 
Para ordenar la lista de menor a mayor tendrías que usar algun algoritmo, como el de burbuja para ordenar los números, recorriendo varias veces la lista e insertando los números en otra lista, podriá ser una solución.

Navegación

[0] Índice de Mensajes

Ir a la versión completa