Listas Simplemente Enlazadas    María Luisa Velasco Ramírez
Listas Enlazadas• Una representación enlazada de un grupo de  elementos de un cierto tipo es una lista  enlazada de nodos,...
• Como se ha visto, un nodo tiene dos atributos:  El dato, de tipo genérico (para poder guardar  cualquier tipo de objeto)...
• public class Nodo {     int dato;•    Nodo siguiente;• public Nodo(int dato) {       this.dato = dato;       this.siguie...
• Una lista enlazada requiere, como mínimo,  una referencia al primer nodo de la lista:• Cuando la lista está vacía, el at...
• public void ListaEnlazada()• {•    primero=null;• }• public boolean estaVacia()• {•   return primero==null;• }
Operaciones básicas con listas•   Crear Lista•   Recorrido de la Lista•   Inserción de un Elemento•   Borrado de un Elemen...
• Lo más eficiente es insertar al principio de la  lista, pues tenemos una referencia al primer  nodo  Ejemplo: Se quiere ...
• public void insertarPrimero(int dato)• {•   //crea un nuevo Nodo•   Nodo nuevoNodo = new Nodo(dato);•   nuevoNodo.siguie...
• public void desplegarLista()•   {•     Nodo actual=primero;•     while (actual!= null)•     {•       System.out.println(...
Código para insertar nodos a la           derecha
• Para insertar nodos a la derecha, es necesario  declarar e inicializar otra variable , en este  caso es último
Código ListaEnlazadaNodo primero;            Declaración de las                         variables primero yNodo ultimo;   ...
Método modificado    public boolean estavacia(){                            para que los nodos             return primero=...
Método para                                       imprimirpublic void desplegarLista(){       Nodoactual=primero;       wh...
do{                     System.out.print("Introduce el dato del nodo");                     System.out.flush();Invocación ...
De manera gráfica sería:id   dato      opc    InsertarPrimero(id, dato)                      Primero y Ultimo1    21.5    ...
Eliminar nodo• public NodoLista eliminarPrimero()• {•    Nodo temp = primero;•     primero = primero.siguiente;•     retur...
Tarea:• Implementar en Java, un menú con las siguientes  operaciones:• A) Crear lista enlazada• B) Insertar a la cabeza de...
• Escribir un algoritmo que inserte un  específico elemento de la lista• Escribir un algoritmo que busque un elemento  en ...
Eliminar Nodos
Listas enlazadas vs. Arreglos
Listasenlazadas 100517143015-phpapp02
Upcoming SlideShare
Loading in …5
×

Listasenlazadas 100517143015-phpapp02

8,635 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
8,635
On SlideShare
0
From Embeds
0
Number of Embeds
7,340
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Listasenlazadas 100517143015-phpapp02

  1. 1. Listas Simplemente Enlazadas María Luisa Velasco Ramírez
  2. 2. Listas Enlazadas• Una representación 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 dinámica y conectados entre sí• 􀂆 Ejemplo: lista de enteros {4, 8, 5, 3, 2}
  3. 3. • Como se ha visto, un nodo tiene dos atributos: El dato, de tipo genérico (para poder guardar cualquier tipo de objeto)• Una referencia al nodo siguiente.
  4. 4. • public class Nodo { int dato;• Nodo siguiente;• public Nodo(int dato) { this.dato = dato; this.siguiente = null; }• }
  5. 5. • Una lista enlazada requiere, como mínimo, una referencia al primer nodo de la lista:• Cuando la lista está vacía, el atributo primero apunta a null: primero = null;
  6. 6. • public void ListaEnlazada()• {• primero=null;• }• public boolean estaVacia()• {• return primero==null;• }
  7. 7. Operaciones básicas con listas• Crear Lista• Recorrido de la Lista• Inserción de un Elemento• Borrado de un Elemento• Búsqueda de un Elemento
  8. 8. • Lo más 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:
  9. 9. • public void insertarPrimero(int dato)• {• //crea un nuevo Nodo• Nodo nuevoNodo = new Nodo(dato);• nuevoNodo.siguiente=primero;• primero=nuevoNodo;•
  10. 10. • public void desplegarLista()• {• Nodo actual=primero;• while (actual!= null)• {• System.out.println(“El dato es:”+actual.dato);• actual= actual.siguiente;• }• }
  11. 11. Código para insertar nodos a la derecha
  12. 12. • Para insertar nodos a la derecha, es necesario declarar e inicializar otra variable , en este caso es último
  13. 13. Código ListaEnlazadaNodo primero; Declaración de las variables primero yNodo ultimo; ultimo primero=null; Inicializar primero y ultimo ultimo=null;
  14. 14. Método modificado public boolean estavacia(){ para que los nodos return primero==null; se inserten a la } derecha public void insertarUltimo (int dato){ //crea un nuevo nodo NodoLista nuevoNodo=new NodoLista( dato); if(primero==null){ nuevoNodo.siguiente nuevoNodo.siguiente=primero; será igual a null enSe le agrega primero=nuevoNodo; vez de primerouna ultimo=nuevoNodo;condicionpara que }inserte a la else{ nuevoNodo.siguiente=null;derecha ultimo.siguiente=nuevoNodo; ultimo=nuevoNodo; } }
  15. 15. Método para imprimirpublic void desplegarLista(){ Nodoactual=primero; while(actual!=null){ System.out.println(“”+actual.dato); actual=actual.siguiente; } }
  16. 16. do{ System.out.print("Introduce el dato del nodo"); System.out.flush();Invocación al dato=Integer.parseInt(entrada.readLine());métodoinsertarUltimo 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();
  17. 17. De manera gráfica sería:id dato opc InsertarPrimero(id, dato) Primero y Ultimo1 21.5 1 21.5 1 null Primero Ultimo2 15.8 1 21.5 1 15.8 2 null Primero Ultimo3 12.4 1 21.5 1 15.8 2 12.4 3 null Primero Ultimo4 40.2 0 21.5 1 15.8 2 12.4 3 40.2 4 null
  18. 18. Eliminar nodo• public NodoLista eliminarPrimero()• {• Nodo temp = primero;• primero = primero.siguiente;• return temp;• }
  19. 19. 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 vacía
  20. 20. • Escribir un algoritmo que inserte un específico 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 específico de la lista. Ver ejemplo de la diapositiva siguiente.
  21. 21. Eliminar Nodos
  22. 22. Listas enlazadas vs. Arreglos

×