Sunteți pe pagina 1din 23

Listas Simplemente Enlazadas

Mara Luisa Velasco Ramrez

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;

public void ListaEnlazada() { primero=null; } public boolean estaVacia() { return primero==null; }

Operaciones bsicas con listas


Crear Lista Recorrido de la Lista Insercin de un Elemento Borrado de un Elemento Bsqueda de un Elemento

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

Cdigo para insertar nodos a la derecha

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;

Inicializar primero y ultimo

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

Mtodo modificado para que los nodos se inserten a la derecha

nuevoNodo.siguiente ser igual a null en vez de primero

Mtodo para imprimir

public void desplegarLista(){ Nodoactual=primero; while(actual!=null){ System.out.println(+actual.dato); actual=actual.siguiente; } }

do{ System.out.print("Introduce el dato del nodo"); System.out.flush(); dato=Integer.parseInt(entrada.readLine());

Invocacin al mtodo insertarUltimo

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();

De manera grfica sera: id


1
2 3 4

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

Listas enlazadas vs. Arreglos

S-ar putea să vă placă și