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
Ir a la versión completa