Listas Circulares

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 18

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.
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.
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 nodo


2.- lista->sgte apunte a nodo
Añadir un nodo a una lista circular no vacía:
Añadir un nodo a una lista circular no vacía:

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


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

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


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.
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.
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
2.-Hacemos que
lista ->sgte apunte a nodo->sgte

3.- Eliminamos el nodo.


Eliminamos el único nodo de una
lista circular

Si lista es el único nodo de una lista circular


1. Borramos el nodo apuntado por lista.
2. Hacemos que lista valga NULL.

1
2

NULL
DATO • .

LISTA LISTA
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:
1.- Copiamos el contenido del
nodo->sgte sobre el contenido de nodo.
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

También podría gustarte