Singly Linked List

FácilPrioritaria

Colección lineal donde cada elemento apunta al siguiente.

¿Qué es una Singly Linked List?

Una Singly Linked List está compuesta por nodos, donde cada nodo contiene un valor y una referencia al siguiente nodo en la secuencia. A diferencia de un array, no se almacena en ubicaciones contiguas de memoria.

Analogía del Mundo Real

  • Imagina una cadena de trenes donde cada vagón (nodo) sabe cómo llegar al siguiente, pero no al anterior.
  • Si quieres llegar al último vagón, necesitas recorrerlos todos desde el primero.

Cómo Funciona Internamente una Singly Linked List

  1. Cada nodo contiene:
    • value: el dato almacenado.
    • next: una referencia al siguiente nodo.
  2. El primer nodo se llama head.
  3. El último nodo tiene next = null.
  4. Para insertar al inicio: crea un nuevo nodo y apunta su next al head actual.
  5. Para eliminar el primer nodo: cambia el head al siguiente nodo.
  6. Para acceder a un nodo intermedio, debes recorrer desde el head hasta llegar a la posición deseada.

Ejemplos de Código

// Definición del nodo
class Node {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

// Definición de la Singly Linked List
class SinglyLinkedList {
  constructor() {
    this.head = null;
  }

  // Insertar al inicio
  prepend(value) {
    const newNode = new Node(value);
    newNode.next = this.head;
    this.head = newNode;
  }

  // Agregar al final
  append(value) {
    const newNode = new Node(value);
    if (!this.head) {
      this.head = newNode;
      return;
    }
    let current = this.head;
    while (current.next) {
      current = current.next;
    }
    current.next = newNode;
  }

  // Buscar un valor
  find(value) {
    let current = this.head;
    while (current) {
      if (current.value === value) return current;
      current = current.next;
    }
    return null;
  }

  // Eliminar el primer nodo
  removeHead() {
    if (this.head) this.head = this.head.next;
  }
}

Explicación Visual (🚧 En progreso)

Pronto disponible

Estamos trabajando en un video para explicar esta estructura de datos

Complejidad en Tiempo y Espacio

OperaciónPromedioPeor Escenario
AccesoO(n)O(n)
BúsquedaO(n)O(n)
InserciónO(1)O(1)
EliminaciónO(1)O(1)

Donde n es el número de nodos en la lista.

El acceso aleatorio no es posible, ya que se debe recorrer desde el inicio.

Operaciones Comunes

  • .prepend(value)
    Agrega un nodo al inicio de la lista
  • .append(value)
    Agrega un nodo al final de la lista
  • .find(value)
    Busca un nodo por su valor
  • .removeHead()
    Elimina el primer nodo de la lista

Posts relacionados