Estructura y Creación de una Lista Enlazada Simple en JavaScript

Clase 16 de 29Curso de Estructuras de Datos con JavaScript

Resumen

Domina cómo una single linked list organiza datos en memoria y por qué el acceso a un elemento exige recorrer nodo a nodo. Aquí verás, paso a paso, la representación con pointers, el papel de head y tail, y la base de la clase MySingleLinkedList para iniciar la estructura y preparar el método appends.

¿Cómo funciona una single linked list en memoria?

Una linked list guarda cada nodo en un “memory slot” independiente con un pointer al siguiente. Solo se conoce el address del head; desde ahí se avanza validando cada nodo hasta encontrar el valor solicitado. Por eso hay que recorrerla.

  • Cada nodo tiene un value y un next que apunta al siguiente nodo.
  • El sistema solo conoce el address del head. Desde ahí comienza el recorrido.
  • La validación es secuencial: “¿es este el valor?, no… hasta que sí y se regresa”.
  • El tail termina en null. Ese null permite anexar un nuevo nodo después.

¿Cómo se ve una linked list con pointers y null?

Para visualizar la idea, imagina una lista con 1, 2, 3, 4, 5. Cada número “apunta” al siguiente hasta llegar a null.

  • Representación conceptual: 1 → 2 → 3 → 4 → 5 → null.
  • El último nodo es la “cola” (tail) y su pointer es null.

Ejemplo de objeto anidado que modela el encadenamiento por next y cierra en null:

const singleLinkedList = {
  head: {
    value: 1,
    next: {
      value: 2,
      next: {
        value: 3,
        next: {
          value: 4,
          next: null,
        },
      },
    },
  },
};

¿Por qué el null es clave para crecer la lista?

  • Marca el final actual de la estructura.
  • Abre el “espacio” lógico para que el siguiente pointer se asigne a un nuevo nodo.
  • Sin null, no habría forma clara de anexar el “seis” después del “cinco”.

¿Cómo construir la clase MySingleLinkedList y preparar el método appends?

Se inicia con una class que recibe un valor para crear la cabeza. Se fuerza la creación del primer nodo al instanciar, se ajusta la cola al mismo nodo y se lleva un conteo de elementos.

class Nodo {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

class MySingleLinkedList {
  constructor(value) {
    // cabeza con value y next en null
    this.head = {
      value: value,
      next: null,
    };
    // cola apunta a la cabeza al inicio
    this.tail = this.head;
    // conteo de elementos inicial
    this.length = 1;
  }
}

// Instancia inicial con el primer valor
const mySingleLinkedList = new MySingleLinkedList(1);

¿Qué ventajas aporta la clase auxiliar nodo?

  • Evita repetir estructura al crear nuevos nodos.
  • Estandariza value y next en un solo lugar.
  • Hace más simples los métodos que agregan o manipulan nodos.

¿Qué hará el método appends?

  • Recibirá un valor y creará un nuevo nodo.
  • Conectará el tail actual con el nuevo nodo por next.
  • Convertirá el nodo recién creado en la nueva tail.
  • Usará el null del extremo como punto de inserción.

Habilidades y conceptos que consolidas: - Modelado de datos con nodos enlazados por pointers. - Entendimiento de acceso secuencial desde head hasta encontrar el valor. - Diseño de estado interno: head, tail y contador de elementos. - Preparación de método appends para crecer la estructura.

¿Te animas a intentar appends antes de continuar? Prueba a recibir un valor, crear un nodo y convertirlo en la nueva tail. Si te atoras, deja tus dudas en los comentarios y seguimos paso a paso.

      Estructura y Creación de una Lista Enlazada Simple en JavaScript