Documente Academic
Documente Profesional
Documente Cultură
Listas Enlazadas
Una representacin enlazada de un grupo de elementos de un cierto tipo es una lista enlazada de nodos, es decir, una secuencia de nodos situados en la memoria dinmica y conectados entre s Ejemplo: lista de enteros {4, 8, 5, 3, 2}
Como se ha visto, un nodo tiene dos atributos: El dato, de tipo genrico (para poder guardar cualquier tipo de objeto) Una referencia al nodo siguiente.
public class Nodo { int dato; Nodo siguiente; public Nodo(int dato) { this.dato = dato; this.siguiente = null; } }
Una lista enlazada requiere, como mnimo, una referencia al primer nodo de la lista: Cuando la lista est vaca, el atributo primero apunta a null: primero = null;
Lo ms eficiente es insertar al principio de la lista, pues tenemos una referencia al primer nodo Ejemplo: Se quiere insertar el elemento 1 en la siguiente lista:
public void insertarPrimero(int dato) { //crea un nuevo Nodo Nodo nuevoNodo = new Nodo(dato); nuevoNodo.siguiente=primero; primero=nuevoNodo;
public void desplegarLista() { Nodo actual=primero; while (actual!= null) { System.out.println(El dato es:+actual.dato); actual= actual.siguiente; } }
Para insertar nodos a la derecha, es necesario declarar e inicializar otra variable , en este caso es ltimo
Cdigo ListaEnlazada
Nodo primero; Nodo ultimo;
Declaracin de las variables primero y ultimo
primero=null; ultimo=null;
public boolean estavacia(){ return primero==null; } public void insertarUltimo (int dato){ //crea un nuevo nodo NodoLista nuevoNodo=new NodoLista( dato);
if(primero==null){ nuevoNodo.siguiente=primero; primero=nuevoNodo; Se le agrega ultimo=nuevoNodo; una condicion } para que else{ inserte a la nuevoNodo.siguiente=null; derecha ultimo.siguiente=nuevoNodo; ultimo=nuevoNodo; } }
lista.insertarUltimo(dato); //insertar nodo a la lista System.out.print("Deseas seguir insertando datos: SI=1, NO=0"); System.out.flush(); opc=Integer.parseInt(entrada.readLine()); }while(opc==1); lista.desplegarLista();
dato
21.5
15.8 12.4 40.2
opc
1
1 1 0
InsertarPrimero(id, dato)
Primero y Ultimo
21.5 1
null
Primero
21.5 1
Ultimo
15.8 2
Primero
21.5 1 15.8 2
null
Ultimo
12.4 3
Primero
21.5 1 15.8 2 12.4 3
null
40.2
Ultimo
4
null
Eliminar nodo
public NodoLista eliminarPrimero() { Nodo temp = primero; primero = primero.siguiente; return temp; }
Tarea:
Implementar en Java, un men con las siguientes operaciones: A) Crear lista enlazada B) Insertar a la cabeza de la lista C) Insertar al final de la lista D) Borrar el elemento inicial de la lista E)Borrar el ltimo elemento de la lista F) Desplegar los elementos de la lista Deben validar al borrar elementos de la lista que la lista no este vaca
Escribir un algoritmo que inserte un especfico elemento de la lista Escribir un algoritmo que busque un elemento en la lista y lo visualice en pantalla, en caso de no encontrarlo, mandar el mensaje correspondiente. Escribir un algoritmo que borre un elemento especfico de la lista. Ver ejemplo de la diapositiva siguiente.
Eliminar Nodos