Your SlideShare is downloading. ×
0
Listas Simplemente Enlazadas María Luisa Velasco Ramírez
Listas Enlazadas <ul><li>Una representación enlazada de un grupo de elementos de un cierto tipo es una lista enlazada de n...
 
<ul><li>Como se ha visto, un nodo tiene dos atributos: </li></ul><ul><li>El  dato, de tipo  genérico (para poder guardar c...
<ul><li>public   class  Nodo {      int  dato; </li></ul><ul><li>Nodo siguiente; </li></ul><ul><li>     public  Nodo( int ...
<ul><li>Una lista enlazada requiere, como mínimo, una referencia al primer nodo de la lista: </li></ul><ul><li>Cuando la l...
<ul><li>public void ListaEnlazada() </li></ul><ul><li>{ </li></ul><ul><li>primero=null; </li></ul><ul><li>} </li></ul><ul>...
Operaciones básicas con listas <ul><li>Crear Lista </li></ul><ul><li>Recorrido de la Lista  </li></ul><ul><li>Inserción de...
<ul><li>Lo más eficiente es insertar al principio de la lista, pues tenemos una referencia al primer nodo </li></ul><ul><l...
<ul><li>public void insertarPrimero(int  dato) </li></ul><ul><li>{ </li></ul><ul><li>//crea un nuevo Nodo </li></ul><ul><l...
<ul><li>public void desplegarLista() </li></ul><ul><li>{ </li></ul><ul><li>Nodo actual=primero; </li></ul><ul><li>while (a...
Código para insertar nodos a la derecha
<ul><li>Para insertar nodos a la derecha, es necesario declarar e inicializar otra variable , en este caso es  último </li...
Código ListaEnlazada <ul><li>  Nodo primero; </li></ul><ul><li>  Nodo ultimo; </li></ul><ul><li>primero=null; </li></ul><u...
<ul><li>public boolean estavacia(){ </li></ul><ul><li>return primero==null; </li></ul><ul><li>} </li></ul><ul><li>public v...
<ul><li>public void desplegarLista(){ </li></ul><ul><li>Nodoactual=primero; </li></ul><ul><li>while(actual!=null){ </li></...
<ul><li>do{ </li></ul><ul><li>System.out.print(&quot;Introduce el dato del nodo&quot;); </li></ul><ul><li>System.out.flush...
De manera gráfica sería: 21.5  1  15.8  2  21.5  1  12.4  3  15.8  2 21.5  1  40.2  4  12.4  3  15.8  2 21.5  1  null null...
Eliminar nodo <ul><li>public NodoLista eliminarPrimero() </li></ul><ul><li>{ </li></ul><ul><li>Nodo temp =  primero; </li>...
Tarea: <ul><li>Implementar en Java, un menú con las siguientes operaciones: </li></ul><ul><li>A) Crear lista enlazada </li...
<ul><li>Escribir un algoritmo que inserte un  específico elemento de la lista </li></ul><ul><li>Escribir un algoritmo que ...
Eliminar Nodos
Listas enlazadas vs. Arreglos
Upcoming SlideShare
Loading in...5
×

Listas enlazadas

6,240

Published on

Published in: Education, Travel, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,240
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
131
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Listas enlazadas"

  1. 1. Listas Simplemente Enlazadas María Luisa Velasco Ramírez
  2. 2. Listas Enlazadas <ul><li>Una representación enlazada de un grupo de elementos de un cierto tipo es una lista enlazada de nodos, es decir, una </li></ul><ul><li>secuencia de nodos situados en la memoria dinámica y conectados entre sí </li></ul><ul><li>􀂆 Ejemplo: lista de enteros {4, 8, 5, 3, 2} </li></ul>
  3. 4. <ul><li>Como se ha visto, un nodo tiene dos atributos: </li></ul><ul><li>El dato, de tipo genérico (para poder guardar cualquier tipo de objeto) </li></ul><ul><li>Una referencia al nodo siguiente. </li></ul>
  4. 5. <ul><li>public class Nodo {     int dato; </li></ul><ul><li>Nodo siguiente; </li></ul><ul><li>    public Nodo( int dato) {         this .dato = dato;         this .siguiente = null ;     } </li></ul><ul><li>} </li></ul>
  5. 6. <ul><li>Una lista enlazada requiere, como mínimo, una referencia al primer nodo de la lista: </li></ul><ul><li>Cuando la lista está vacía, el atributo primero apunta a null: </li></ul><ul><li>primero = null; </li></ul>
  6. 7. <ul><li>public void ListaEnlazada() </li></ul><ul><li>{ </li></ul><ul><li>primero=null; </li></ul><ul><li>} </li></ul><ul><li>public boolean estaVacia() </li></ul><ul><li>{ </li></ul><ul><li>return primero==null; </li></ul><ul><li>} </li></ul>
  7. 8. Operaciones básicas con listas <ul><li>Crear Lista </li></ul><ul><li>Recorrido de la Lista </li></ul><ul><li>Inserción de un Elemento </li></ul><ul><li>Borrado de un Elemento </li></ul><ul><li>Búsqueda de un Elemento </li></ul>
  8. 9. <ul><li>Lo más eficiente es insertar al principio de la lista, pues tenemos una referencia al primer nodo </li></ul><ul><li>Ejemplo: Se quiere insertar el elemento “1” en la siguiente lista: </li></ul>
  9. 10. <ul><li>public void insertarPrimero(int dato) </li></ul><ul><li>{ </li></ul><ul><li>//crea un nuevo Nodo </li></ul><ul><li>Nodo nuevoNodo = new Nodo(dato); </li></ul><ul><li>nuevoNodo.siguiente=primero; </li></ul><ul><li>primero=nuevoNodo; </li></ul>
  10. 11. <ul><li>public void desplegarLista() </li></ul><ul><li>{ </li></ul><ul><li>Nodo actual=primero; </li></ul><ul><li>while (actual!= null) </li></ul><ul><li>{ </li></ul><ul><li>System.out.println(“El dato es:”+actual.dato); </li></ul><ul><li>actual= actual.siguiente; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  11. 12. Código para insertar nodos a la derecha
  12. 13. <ul><li>Para insertar nodos a la derecha, es necesario declarar e inicializar otra variable , en este caso es último </li></ul>
  13. 14. Código ListaEnlazada <ul><li> Nodo primero; </li></ul><ul><li> Nodo ultimo; </li></ul><ul><li>primero=null; </li></ul><ul><li>ultimo=null; </li></ul>Declaración de las variables primero y ultimo Inicializar primero y ultimo
  14. 15. <ul><li>public boolean estavacia(){ </li></ul><ul><li>return primero==null; </li></ul><ul><li>} </li></ul><ul><li>public void insertarUltimo (int dato){ </li></ul><ul><li>//crea un nuevo nodo </li></ul><ul><li>NodoLista nuevoNodo=new NodoLista( dato); </li></ul><ul><li>if(primero==null){ </li></ul><ul><li> nuevoNodo.siguiente=primero; </li></ul><ul><li> primero=nuevoNodo; </li></ul><ul><li>ultimo=nuevoNodo; </li></ul><ul><li>} </li></ul><ul><li>else{ </li></ul><ul><li>nuevoNodo.siguiente=null; </li></ul><ul><li>ultimo.siguiente=nuevoNodo; </li></ul><ul><li>ultimo=nuevoNodo; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>Método modificado para que los nodos se inserten a la derecha nuevoNodo.siguiente será igual a null en vez de primero Se le agrega una condicion para que inserte a la derecha
  15. 16. <ul><li>public void desplegarLista(){ </li></ul><ul><li>Nodoactual=primero; </li></ul><ul><li>while(actual!=null){ </li></ul><ul><li>System.out.println(“”+actual.dato); </li></ul><ul><li>actual=actual.siguiente; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>Método para imprimir
  16. 17. <ul><li>do{ </li></ul><ul><li>System.out.print(&quot;Introduce el dato del nodo&quot;); </li></ul><ul><li>System.out.flush(); </li></ul><ul><li>dato=Integer.parseInt(entrada.readLine()); </li></ul><ul><li>lista.insertarUltimo(dato); </li></ul><ul><li>//insertar nodo a la lista </li></ul><ul><li>System.out.print(&quot;Deseas seguir insertando datos: SI=1, NO=0&quot;); </li></ul><ul><li>System.out.flush(); </li></ul><ul><li>opc=Integer.parseInt(entrada.readLine()); </li></ul><ul><li>}while(opc==1); </li></ul><ul><li>lista.desplegarLista(); </li></ul>Invocación al método insertarUltimo
  17. 18. De manera gráfica sería: 21.5 1 15.8 2 21.5 1 12.4 3 15.8 2 21.5 1 40.2 4 12.4 3 15.8 2 21.5 1 null null null null Primero Primero Primero Primero Ultimo Ultimo Ultimo y Ultimo id dato opc InsertarPrimero(id, dato) 1 2 3 4 21.5 15.8 12.4 40.2 1 1 1 0
  18. 19. Eliminar nodo <ul><li>public NodoLista eliminarPrimero() </li></ul><ul><li>{ </li></ul><ul><li>Nodo temp = primero; </li></ul><ul><li>primero = primero.siguiente; </li></ul><ul><li>return temp; </li></ul><ul><li>} </li></ul>
  19. 20. Tarea: <ul><li>Implementar en Java, un menú con las siguientes operaciones: </li></ul><ul><li>A) Crear lista enlazada </li></ul><ul><li>B) Insertar a la cabeza de la lista </li></ul><ul><li>C) Insertar al final de la lista </li></ul><ul><li>D) Borrar el elemento inicial de la lista </li></ul><ul><li>E)Borrar el último elemento de la lista </li></ul><ul><li>F) Desplegar los elementos de la lista </li></ul><ul><li>Deben validar al borrar elementos de la lista que la lista no este vacía </li></ul>
  20. 21. <ul><li>Escribir un algoritmo que inserte un específico elemento de la lista </li></ul><ul><li>Escribir un algoritmo que busque un elemento en la lista y lo visualice en pantalla, en caso de no encontrarlo, mandar el mensaje correspondiente. </li></ul><ul><li>Escribir un algoritmo que borre un elemento específico de la lista. Ver ejemplo de la diapositiva siguiente. </li></ul>
  21. 22. Eliminar Nodos
  22. 23. Listas enlazadas vs. Arreglos
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×