Lista doblemente enlazada

Una lista doblemente enlazada, también conocida como lista enlazada bidireccional, es una estructura de datos en la que cada nodo contiene una referencia tanto al nodo anterior como al siguiente en la lista. Esto permite recorrer la lista en ambas direcciones: desde el primer nodo hasta el último y viceversa.

En esta implementación, la clase Node representa un nodo de la lista, con data para almacenar el valor del nodo, prev para la referencia al nodo anterior y next para la referencia al nodo siguiente.

La clase DoublyLinkedList representa la lista doblemente enlazada, con métodos para agregar elementos al final (append), agregar elementos al principio (prepend), eliminar un elemento (remove), mostrar la lista en orden directo (display) y mostrar la lista en orden inverso (displayReverse).

En esta implementación, la clase Node representa un nodo de la lista, con data para almacenar el valor del nodo, prev para la referencia al nodo anterior y next para la referencia al nodo siguiente.

Puedes utilizar la clase DoublyLinkedList para crear una lista doblemente enlazada, agregar elementos, eliminar elementos y mostrar el contenido de la lista en ambos sentidos.

Lista circular doblemente enlazada

Una lista circular doblemente enlazada es una variante de la lista doblemente enlazada en la que el último nodo de la lista apunta de nuevo al primer nodo, formando un ciclo. Esto permite recorrer la lista en un bucle continuo.

Aquí tienes una implementación básica de una lista circular doblemente enlazada en C++:

(displayReverse)

Aquí tienes un ejemplo de uso de la lista circular doblemente enlazada:

En esta implementación, la clase Node representa un nodo de la lista, con data para almacenar el valor del nodo, prev para la referencia al nodo anterior y next para la referencia al nodo siguiente.

La clase CircularDoublyLinkedList representa la lista circular doblemente enlazada, con métodos para agregar elementos al final (append), agregar elementos al principio (prepend), eliminar un elemento (remove), mostrar la lista en orden directo (display) y mostrar la lista en orden inverso (displayReverse).

Puedes utilizar la clase CircularDoublyLinkedList para crear una lista circular doblemente enlazada, agregar elementos, eliminar elementos y mostrar el contenido de la lista en ambos sentidos, considerando el comportamiento circular.