Aprendiendo Desarrollo

Listas enlazadas

Los arrays almacenan elementos en ubicaciones de memoria contiguas, lo que resulta en direcciones fácilmente calculables para los elementos almacenados y permite un acceso más rápido a un elemento en un índice específico. Las listas enlazadas son menos rígidas en su estructura de almacenamiento, y generalmente los elementos no se almacenan en ubicaciones contiguas, por lo que necesitan ser almacenados con etiquetas adicionales que proporcionen una referencia al siguiente elemento. Esta diferencia en el esquema de almacenamiento de datos determina qué estructura de datos sería más adecuada para una situación dada.

La implementación de una lista enlazada puede variar dependiendo del lenguaje de programación. Aquí te dejo un ejemplo básico de cómo se podría implementar una lista enlazada en JavaScript:

// Definir la clase Nodo
class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}

// Definir la clase ListaEnlazada
class LinkedList {
  constructor() {
    this.head = null;
  }

  // Método para agregar un nuevo nodo al final de la lista
  append(data) {
    const newNode = new Node(data);

    if (!this.head) {
      this.head = newNode;
      return;
    }

    let current = this.head;
    while (current.next) {
      current = current.next;
    }

    current.next = newNode;
  }

  // Método para imprimir la lista
  print() {
    let current = this.head;
    while (current) {
      console.log(current.data);
      current = current.next;
    }
  }
}

// Ejemplo de uso
const listaEnlazada = new LinkedList();
listaEnlazada.append(1);
listaEnlazada.append(2);
listaEnlazada.append(3);

listaEnlazada.print();

En este ejemplo, la clase Node representa un nodo de la lista con un valor (data) y una referencia al siguiente nodo (next). La clase LinkedList tiene un puntero a la cabeza de la lista (head) y métodos para agregar nodos al final (append) e imprimir la lista (print).

Las listas enlazadas se utilizan en diversos contextos, como por ejemplo:

  1. Implementación de pilas y colas.
  2. Implementación de gráficos: la representación de gráficos de listas de adyacencia es la más popular, que utiliza una lista vinculada para almacenar vértices adyacentes.
  3. Asignación de memoria dinámica: se utiliza una lista enlazada de bloques libres.
  4. Mantenimiento del directorio de nombres.
  5. Realización de operaciones aritméticas con números enteros largos

Enlaces de interés

Videos

Practicas

Preguntas de repaso

¿Cuál es la principal diferencia entre un array y una lista enlazada?

¿Qué propiedad tiene cada nodo en una lista enlazada simple?

¿Para qué se utiliza comúnmente una lista enlazada?

¿Qué ocurre si intentas acceder al elemento en la posición 5 de una lista enlazada?

Reto de programación

Crea una lista enlazada

Loading editor...

// A continuacion agrega o corrige el codigo
// para tener una lista enlazada funcional
function main(nodo) { 
  const listaEnlazada = new LinkedList();
  // Agregar los nodos a la lista enlazada

  return listaEnlazada.print();
}

class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}

class LinkedList {
  constructor() {
    this.head = null;
  }

  append(data) {
    const newNode = new Node(data);

    if (!this.head) {
      this.head = newNode;
      return;
    }
    
    // Si la lista no esta vacia, recorremos hasta el final
    // y agregamos el nuevo nodo
    {}

    current.next = newNode;
  }

  print() {
    let current = this.head;
    let list = []
    // Recorremos la lista y agregamos los datos a un array

    return list
  }
}
Aqui se mostraran tus resultados