Download - Estructuras de datos y algoritmos
![Page 1: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/1.jpg)
Oscar Bedoya.
http://eisc.univalle.edu.co/~oscarbed/Estructuras/
Edificio 331, 2º piso, E.I.S.C.
Estructuras de datos y algoritmos
![Page 2: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/2.jpg)
Lista circular
Definición
Una lista circular es una colección de elementos llamados nodos, organizados de tal manera que el siguiente del ultimo nodo apunta al nodo cabecera
![Page 3: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/3.jpg)
Lista circular
El campo siguiente del ultimo nodo, aquel cuyo dato es 51, apunta al nodo cabecera
dato siguiente dato siguiente
23 51
dato siguiente
![Page 4: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/4.jpg)
Lista circular
Definición
Una lista circular es una estructura de datos dinámica que permite almacenar cualquier cantidad de nodos.
Tiene la ventaja de que procesos de búsqueda o de manipulación de los datos que requieran recorrer la lista completa más de una vez se realizan eficientemente
![Page 5: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/5.jpg)
Lista circular
Definición
Las operaciones sobre una lista enlazada son:
•Crear lista circular•Insertar nodo al inicio•Eliminar nodo al inicio•Imprimir datos•Es una lista circular vacía?
![Page 6: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/6.jpg)
Lista circular
•Crear lista circular
Al crear una lista circular, se crea el nodo cabecera.
El nodo cabecera tiene como dato null y como siguiente null.
![Page 7: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/7.jpg)
•Insertar nodo al inicio( La lista circular está vacía)
W
•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente al nodo cabecera
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
Lista circular
![Page 8: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/8.jpg)
•Insertar nodo al inicio( La lista no está vacía)
W
•Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera
•Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando
A W
Lista circular
![Page 9: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/9.jpg)
•Eliminar nodo al inicio(La lista circular tiene mas de un nodo)
A W
W
•Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo
Lista circular
![Page 10: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/10.jpg)
•Eliminar nodo al inicio(La lista circular tiene un nodo)
W
•Al campo siguiente del nodo cabecera se le asigna null
Lista circular
![Page 11: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/11.jpg)
•Imprimir datos
Lista circular
![Page 12: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/12.jpg)
•Está una lista vacía?
Cuando la lista está vacía el campo siguiente de la cabecera es null
Lista circular
![Page 13: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/13.jpg)
Cada nodo se representa por medio de dos campos:
Campo dato: contiene el valor del nodo
Campo siguiente: indica cuál es el nodo con el que se enlaza
class Nodo{
Object dato; Nodo siguiente;
Nodo(Object o) { dato=o; siguiente=null; }
Nodo(Object o, Nodo n) { dato=o; siguiente=n; }}
Lista circular
![Page 14: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/14.jpg)
Crear lista circular
Al crear una lista circular, se crea el nodo cabecera.
El nodo cabecera tiene como dato null y como siguiente null.
class ListaC{
Nodo cabecera;
ListaC() { cabecera=new Nodo(null); }
Lista circular
![Page 15: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/15.jpg)
•Está una lista circular vacía?
Cuando la lista está vacía el campo siguiente de la cabecera es null
public boolean estaVacia(){
if (cabecera.siguiente==null)
{
return true;
}
else
{
return false;
}
}
Lista circular
![Page 16: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/16.jpg)
Insertar nodo al inicio( La lista circular está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente al nodo cabecera
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
void insertar(Object o) { Nodo nuevo=new Nodo(null);
if ( estaVacia() ) { nuevo=new Nodo(o); nuevo.siguiente=cabecera; cabecera.siguiente=nuevo; }
Lista circular
![Page 17: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/17.jpg)
Insertar nodo al inicio( La lista circular no está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera
•Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando
void insertar(Object o) { Nodo nuevo=new Nodo(null);
if ( estaVacia() ) { nuevo=new Nodo(o); nuevo.siguiente=cabecera; cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } }
Lista circular
![Page 18: Estructuras de datos y algoritmos](https://reader036.vdocuments.co/reader036/viewer/2022083010/56815374550346895dc178b7/html5/thumbnails/18.jpg)
Eliminar nodo al inicio
•Al campo siguiente del nodo cabecera se le asigna null, si solo hay un nodo
•Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo, si la lista circular tiene más de un nodo
public void eliminar() { Nodo borrar=cabecera.siguiente;
if (borrar.siguiente==cabecera) cabecera.siguiente=null; else{ cabecera.siguiente=borrar.siguiente; } }
Lista circular