Es una estructura de datos lineal y dinámica formada por elementos llamados nodos. Cada nodo almacena un dato y una referencia que indica cuál es el siguiente nodo de la lista.
A diferencia de una pila o una cola implementada con arreglos, una lista enlazada no necesita reservar desde el inicio un número fijo de celdas: puede crecer o disminuir conforme se agregan o eliminan nodos.
La variable Inicio apunta al primer nodo. Cada nodo contiene el dato y una referencia Siguiente. El último nodo apunta a null.
La información que queremos almacenar: una canción, alumno, producto, tarea, etc.
Referencia que guarda la dirección lógica del próximo nodo.
Indica que ya no existe otro nodo después: hemos llegado al final.
Para llegar al nodo 4 debemos pasar antes por los nodos 1, 2 y 3. No existe acceso directo por índice como en un arreglo.
Los nodos se crean cuando se necesitan. No hay un Max fijo propio de la estructura; el límite práctico depende de la memoria disponible.
Una lista no obliga a trabajar como LIFO o FIFO. Podemos insertar o eliminar al inicio, al final o en posiciones intermedias.
Lo importante no es dónde está físicamente cada nodo, sino que cada referencia Siguiente mantenga conectada la cadena.
Dato: información almacenada.Siguiente: referencia al próximo nodo.Siguiente = null.Inicio: referencia al primer nodo.EstaVacia(): verifica si Inicio == null.InsertarFinal(): recorre y enlaza el nodo nuevo al final.EliminarPrimero(): mueve Inicio al segundo nodo.Buscar(): recorre nodo por nodo hasta encontrar el dato.Agrega datos al inicio o al final. Observa cómo cambia la cadena sin mover los demás nodos a celdas contiguas.
Cada canción puede representar un nodo. La referencia Siguiente permite avanzar a la canción que continúa.
Cada parada puede apuntar a la siguiente. Si insertas una nueva parada, modificas enlaces sin reconstruir toda la colección.
La cantidad de tareas puede cambiar durante la ejecución y cada nuevo elemento se enlaza a los existentes.