1 / 18

Listas circulares

Listas circulares . Que es una lista circular?. Una lista circular es una lista lineal en la que el ultimo nodo apunta al primero. Operaciones básicas con listas circulares:. Añadir o insertar nodos Buscar o localizar nodos Borrar nodo. Moverse a través de la lista siguiente.

Download Presentation

Listas circulares

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. Listas circulares

  2. Que es una lista circular? • Una lista circular es una lista lineal en la que el ultimo nodo apunta al primero

  3. Operaciones básicas con listas circulares: • Añadir o insertar nodos • Buscar o localizar nodos • Borrar nodo. • Moverse a través de la lista siguiente.

  4. Añadir un nodo en una lista circular vacía: • El único caso especial a la hora de insertar nodos en listas circulares el cuando la lista este vacía.

  5. Añadir un nodo a una lista circular vacía Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero que define la lista, que valdrá NULL: Nodo insertado Lista vacía 1.- lista apunte a nodo 2.- lista->sgte apunte a nodo

  6. Añadir un nodo a una lista circular no vacía:

  7. Añadir un nodo a una lista circular no vacía: . 1.- hacem os que nodo->sgte apunte a lista->sgte.

  8. Añadir un nodo a una lista circular no vacía: 2.- Después que lista->sgte apunte a nodo.

  9. Eliminar • Para esta operación podemos encontrar tres casos diferentes: • Eliminar un nodo cualquiera, que no sea el apuntado por lista. • Eliminar el nodo apuntado por lista, y que no sea el único nodo. • Eliminar el único nodo de la lista.

  10. Buscar un nodo a una lista circular • Cuando queremos buscar un nodo en una lista circular solo hay que tener una precaución, es necesario almacenar el puntero del nodo en que se empezó la búsqueda e ir comparando que no sea igual al sgte para evitar entrar en un bucle infinito. • Por lo demás , la búsqueda es igual que en el caso de listas enlazadas lineales o abiertas.

  11. Eliminar un nodo de una lista circular con mas de un nodo. • Consideremos los dos primeros casos como uno solo. 1.-hacemos que lista apunte al nodo anterior al que queremos eliminar. Lista=lista->sgte mientras lista->sgte !=nodo

  12. 2.-Hacemos que lista ->sgte apunte a nodo->sgte 3.- Eliminamos el nodo.

  13. Eliminamos el único nodo de una lista circular Si lista es el único nodo de una lista circular Borramos el nodo apuntado por lista. Hacemos que lista valga NULL. 1 2 NULL DATO • . LISTA LISTA

  14. Otro algoritmo para eliminar nodos Existe un modo alternativo de eliminar un nodo en una lista circular con mas nodos Supongamos que queremos eliminar un nodo apuntado por nodo:

  15. 1.- Copiamos el contenido del nodo->sgte sobre el contenido de nodo.

  16. 2.- Hacemos que nodo->sgte apunte a nodo->sgte->sgte 3.- Eliminamos nodo->sgte 4.- Si lista es el nodo->sgte, hacemos que lista=nodo

More Related