Es una estructura de datos que se compone por una secuencia de nodos.
Cada nodo se compone dos partes:
En otras palabras: Un nodo solo sabe el dato que contiene y a qué nodos apuntar.
Hay 3 tipos de linked lists:
Cada nodo tiene una referencia al siguiente nodo. Por lo tanto, solo se puede recorrer la lista en una dirección.
Un ejemplo en C++ de la clase Nodo, para este tipo de lista enlazada:
class Node{
private:
int value;
Node *next;
public:
Node(int value, Node *next);
}
La lista tiene un apuntador al nodo sucesor y al nodo predecesor. Esto significa que se puede recorrer la lista en dos direcciones.
Un ejemplo en C++ de la clase Nodo, para este tipo de lista enlazada:
class Node{
private:
int value;
Node *next, *prev;
public:
DoubleNode(int value, Node *next, Node *prev);
}
Es un tipo de lista enlazada simple o doble, pero tiene una característica particular: El último nodo tiene un apuntador al head node. Esto significa que se puede recorrer infinitamente.
Como cada nodo tiene la referencia a la dirección del siguiente, los datos no deben estar almacenados secuencialmente en la memoria.
Aquí hay una pequeña descripción de algunas de las operaciones más comunes en relación a las listas enlazadas.
Para insertar un nodo debo:
Para eliminar un nodo debo:
Para obtener el elemento n debo:
El beneficio de saber usar diferentes estructuras de datos es que podemos compararlas, lo cual nos permite escoger la estructura que más nos conviene, de acuerdo a lo que estamos haciendo.
Comparando con un arreglo o vector, las ventajas/desventajas de implementar una lista enlazada son:
Ventajas
Desventajas