Listas circulares

18
Listas circulares

description

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. - PowerPoint PPT Presentation

Transcript of Listas circulares

Page 1: Listas circulares

Listas circulares

Page 2: Listas circulares

Que es una lista circular?

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

Page 3: Listas circulares

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.

Page 4: Listas circulares

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.

Page 5: Listas circulares

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:

Lista vacía Nodo insertado

1.- lista apunte a nodo2.- lista->sgte apunte a nodo

Page 6: Listas circulares

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

Page 7: Listas circulares

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

.

1.- hacem os que nodo->sgte apunte a lista->sgte.

Page 8: Listas circulares

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

2.- Después que lista->sgte apunte a nodo.

Page 9: Listas circulares

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.

Page 10: Listas circulares

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.

Page 11: Listas circulares

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

Page 12: Listas circulares

3.- Eliminamos el nodo.

2.-Hacemos que lista ->sgte apunte a nodo->sgte

Page 13: Listas circulares

Eliminamos el único nodo de una lista circular

Si lista es el único nodo de una lista circular1. Borramos el nodo apuntado por lista.2. Hacemos que lista valga NULL.

LISTA

DATO • . NULL

LISTA

12

Page 14: Listas circulares

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:

Page 15: Listas circulares

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

Page 16: Listas circulares

2.- Hacemos que nodo->sgte apunte a nodo->sgte->sgte

3.- Eliminamos nodo->sgte4.- Si lista es el nodo->sgte, hacemos que lista=nodo

Page 17: Listas circulares
Page 18: Listas circulares