1 / 59

Programación II Listas

Igor Santos Grueiro. Programación II Listas. Ya conocemos las listas. Listas de amigos. Listas de compras. ¿ Qué es una lista?. Una lista es un conjunto de elementos homogéneo que cumple :. El orden relativo de estos elementos es significativo. (1,2,3). (1,3,2). !=.

hamish
Download Presentation

Programación II Listas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Igor Santos Grueiro Programación IIListas

  2. Ya conocemos las listas

  3. Listas de amigos

  4. Listas de compras

  5. ¿Qué es una lista?

  6. Una lista es un conjunto de elementos homogéneo que cumple:

  7. El orden relativo de estos elementos es significativo (1,2,3) (1,3,2) !=

  8. Pueden haber elementos repetidos (1,2,2,2,2,2,2,3)

  9. Ya sabemos utilizar la lista enlazada

  10. Pero, ¿cómose implementa por dentro?

  11. Una lista se puede construir: De forma estática De forma dinámica

  12. Una lista se puede implementar de forma estática mediante un array

  13. Tiene una única ventaja: permite el acceso directo a un elemento

  14. Tiene múltiples desventajas

  15. 1 El tamaño de la lista tiene que ser fijo y conocido en tiempo de compilación

  16. 2 En las inserciones y borrados, hay que provocar un desplazamiento de elementos que repercute en el tiempo de ejecución

  17. 3 Se desaprovecha el espacio de la memoria real, en el caso de lista cortas

  18. ArrayList en java

  19. Para una lista dinámica, de nuevo Nodo Nodo siguiente Object elemento

  20. } Tiene los siguientes atributos public class NodoListaEnlazadaSimple { private Object elemento; privateNodoListaEnlazadaSimplesiguiente; }

  21. } Un nodo se puede crear de varias formas

  22. 1 Se puede crear vacío publicNodoListaEnlazadaSimple(){ this.elemento = null; this.siguiente = null; }

  23. null

  24. 2 Se puede crear con un objeto dentro publicNodoListaEnlazadaSimple(Object x) { this.elemento = x; this.siguiente = null; }

  25. x

  26. 3 Se puede crear con un objeto dentro y un enlace a otro nodo • publicNodoListaEnlazadaSimple(Object x, NodoListaEnlazadaSimplesig) { • this.elemento = x; • this.siguiente = sig; • }

  27. Nodo siguiente X

  28. } Getters y Setters para el valor del objeto y para el nodo siguiente

  29. } Podemos insertar un nodo siguiente al nodo publicvoidinsertarSig(Object x){ NodoListaEnlazadaSimplenuevoNodo = newNodoListaEnlazadaSimple(); nuevoNodo.elemento = x; nuevoNodo.siguiente = this.siguiente; this.siguiente = nuevoNodo; }

  30. siguiente elemento X

  31. } Podemos borrar el siguiente nodo publicvoidborrarSig(){ this.siguiente = this.siguiente.siguiente; }

  32. Ahora la clase ListaEnlazadaSimple

  33. } publicclassListaEnlazadaSimple { privateNodoListaEnlazadaSimpleprimero; privateNodoListaEnlazadaSimplerecorrido; privateinttamanyo; publicListaEnlazadaSimple(){ this.primero = null; this.recorrido = null; this.tamanyo = 0; } }

  34. Para vaciar el primer nodo y el recorrido a null //… publicvoidvaciar(){ this.primero = null; this.recorrido = null; this.tamanyo = 0; } //…

  35. Para comprobar si una lista está vacía comprobamos si el primero es null //… publicbooleanestaVacia (){ return(this.primero == null); } //…

  36. public Object cima(){ return v[cont-1]; } También, podemos recuperar el número de elementos insertados en la lista //… public inttamanyo(){ returntamanyo; } //…

  37. public Object cima(){ return v[cont-1]; } Podemos insertar un objeto en la primera posición de la lista //… publicvoidinsertarPrimero(Object x) { primero = newNodoListaEnlazadaSimple(x, primero); this.tamanyo++; } //…

  38. Primero Cima x

  39. public Object cima(){ return v[cont-1]; } Necesitaremos acceder al nodo en cierta posición de la lista //… privateNodoListaEnlazadaSimpledevuelvePos(int pos) { NodoListaEnlazadaSimpletemp = primero; for (int i = 1; i <= pos; i++) { temp = temp.getSiguiente(); } returntemp; }//…

  40. public Object cima(){ return v[cont-1]; } Para insertar un objeto en cierta posición de la lista //… publicvoidinsertarPos(Object x, int pos) { if (pos == 0) primero = newNodoListaEnlazadaSimple(x, primero); else devuelvePos(pos - 1).insertarSig(x); tamanyo++; } //…

  41. Primero Cima Pos 1 siguiente elemento X

  42. public Object cima(){ return v[cont-1]; } Para modificar un objeto en cierta posición de la lista //… publicvoidmodificarPos(Object x, int pos) { NodoListaEnlazadaSimpletemp = devuelvePos(pos); temp.setElemento(x); } //…

  43. public Object cima(){ return v[cont-1]; } Para borrar un objeto en cierta posición de la lista //… publicvoidborrarPos(int pos) { if (pos == 0) primero = primero.getSiguiente(); else { NodoListaEnlazadaSimpletemp = devuelvePos(pos - 1); temp.borrarSig(); } tamanyo--; }//…

  44. Primero Cima Pos 1

  45. public Object cima(){ return v[cont-1]; } Para borrar un objeto específico de la lista //… publicvoid borrar(Object x) { NodoListaEnlazadaSimpleant = null; NodoListaEnlazadaSimpletemp = primero; while ((temp != null) && (!temp.getElemento().equals(x))) { ant = temp; temp = temp.getSiguiente(); } if (temp != null) { if (temp == primero) primero = temp.getSiguiente(); else ant.setSiguiente(temp.getSiguiente()); tamanyo--; } }//…

  46. public Object cima(){ return v[cont-1]; } Podemos devolver un elemento en cierta posición //… publicObjectextraerPos(int pos) { returndevuelvePos(pos).getElemento(); }//…

  47. public Object cima(){ return v[cont-1]; } Para buscar un objeto específico de la lista //… publicint buscar(Object x) { int i = 0; NodoListaEnlazadaSimpletemp = primero; while ((i < tamanyo) && (!temp.getElemento().equals(x))) { temp = temp.getSiguiente(); i++; } if (i >= tamanyo) return -1; else return i; } //…

  48. Las operaciones de recorrido

  49. public Object cima(){ return v[cont-1]; } Podemos iniciar un recorrido por la lista //… publicvoidinicioRecorrido() { recorrido = primero; }//…

More Related