Lista enlazada Es una estructura de datos lineal, en la que los elementos no se almacenan en una ubicación contigua, sino que se vinculan mediante punteros. La lista vinculada forma una serie de nodos conectados, donde cada nodo almacena los datos y la dirección del siguiente nodo.

Estructura de nodo: Un nodo en una lista vinculada normalmente consta de dos componentes:
Datos: Contiene el valor real o los datos asociados con el nodo.
Siguiente puntero: Almacena la dirección de memoria (referencia) del siguiente nodo en la secuencia.
Cabeza y cola: Se accede a la lista vinculada a través del nodo principal, que apunta al primer nodo de la lista. El último nodo de la lista apunta a NULL o nullptr, lo que indica el final de la lista. Este nodo se conoce como nodo de cola.
¿Por qué se necesita una estructura de datos de lista vinculada?
Estas son algunas de las ventajas de una lista vinculada que se enumera a continuación y le ayudarán a comprender por qué es necesario saberla.
- Estructura de datos dinámica: El tamaño de la memoria se puede asignar o desasignar en tiempo de ejecución según la operación de inserción o eliminación.
- Facilidad de inserción/eliminación: La inserción y eliminación de elementos es más simple que las matrices, ya que no es necesario mover elementos después de la inserción y eliminación, solo es necesario actualizar la dirección.
- Utilización eficiente de la memoria: Como sabemos, la lista vinculada es una estructura de datos dinámica, el tamaño aumenta o disminuye según los requisitos, por lo que esto evita el desperdicio de memoria.
- Implementación: Se pueden implementar varias estructuras de datos avanzadas utilizando una lista vinculada como una pila, cola, gráfico, mapas hash, etc.
Ejemplo:
En un sistema, si mantenemos una lista ordenada de ID en una matriz id[] = [1000, 1010, 1050, 2000, 2040].
Si queremos insertar un nuevo ID 1005, para mantener el orden, debemos mover todos los elementos después de 1000 (excluyendo 1000).
La eliminación también es costosa con las matrices, a menos que se utilicen algunas técnicas especiales. Por ejemplo, para eliminar 1010 en id[], todo lo que esté después de 1010 debe moverse debido a que se está realizando tanto trabajo que afecta la eficiencia del código.
Tipos de listas enlazadas :
Existen principalmente tres tipos de listas enlazadas:
- Lista de enlace único
- lista doblemente enlazada
- Lista circular enlazada
1. Lista de enlace único :
En una lista enlazada individualmente, cada nodo contiene una referencia al siguiente nodo de la secuencia. Atravesar una lista enlazada individualmente se realiza hacia adelante.

Lista de enlace único
2. Lista doblemente enlazada :
En una lista doblemente enlazada, cada nodo contiene referencias tanto al nodo siguiente como al anterior. Esto permite el recorrido tanto hacia adelante como hacia atrás, pero requiere memoria adicional para la referencia hacia atrás.

Lista doblemente enlazada
3. Lista circular enlazada :
En una lista circular enlazada, el último nodo apunta al nodo principal, creando una estructura circular. Puede estar simple o doblemente vinculado.
alineación de texto css

Lista circular enlazada
Operaciones en listas enlazadas
- Inserción : Agregar un nuevo nodo a una lista vinculada implica ajustar los punteros de los nodos existentes para mantener la secuencia adecuada. La inserción se puede realizar al principio, al final o en cualquier posición dentro de la lista.
- Supresión : Eliminar un nodo de una lista vinculada requiere ajustar los punteros de los nodos vecinos para cerrar el espacio dejado por el nodo eliminado. La eliminación se puede realizar al principio, al final o en cualquier posición dentro de la lista.
- buscando : La búsqueda de un valor específico en una lista vinculada implica recorrer la lista desde el nodo principal hasta encontrar el valor o llegar al final de la lista.
Análisis de complejidad de la lista enlazada :
- Complejidad del tiempo: O(n)
- Espacio auxiliar: O(n)
Ventajas de las listas enlazadas
- Tamaño dinámico: Las listas enlazadas pueden crecer o reducirse dinámicamente, ya que la asignación de memoria se realiza en tiempo de ejecución.
- Inserción y Eliminación: Agregar o eliminar elementos de una lista vinculada es eficaz, especialmente para listas grandes.
- Flexibilidad: Las listas enlazadas se pueden reorganizar y modificar fácilmente sin necesidad de un bloque de memoria contiguo.
Desventajas de las listas enlazadas
- Acceso aleatorio: A diferencia de los arrays, las listas enlazadas no permiten el acceso directo a elementos por índice. Se requiere atravesar para llegar a un nodo específico.
- Memoria adicional: Las listas enlazadas requieren memoria adicional para almacenar los punteros, en comparación con las matrices.
Conclusión:
Las listas enlazadas son estructuras de datos versátiles que proporcionan asignación de memoria dinámica y operaciones eficientes de inserción y eliminación. Comprender los conceptos básicos de las listas enlazadas es esencial para cualquier programador o entusiasta de la informática. Con este conocimiento, podrá implementar listas vinculadas para resolver diversos problemas y ampliar su comprensión de las estructuras de datos y los algoritmos.