Implementación de una Lista en JavaScript

Definición del Tipo Abstracto de Datos (TAD) Lista

Una lista representa una colección ordenada de elementos donde cada posición tiene un suceser y predecesor, excepto los extremos. Permite operaciones básicas como inserción, eliminación y recorrido secuencial.

Clase Lista en JavaScript

Implementamos una lista con funcionalidad completa:

class Lista {
  constructor() {
    this.almacen = [];
    this.total = 0;
    this.cursor = 0;
  }

  agregar(elemento) {
    this.almacen[this.total] = elemento;
    this.total++;
  }

  eliminar(elemento) {
    const indice = this.buscar(elemento);
    if (indice !== -1) {
      this.almacen.splice(indice, 1);
      this.total--;
      return true;
    }
    return false;
  }

  buscar(elemento) {
    return this.almacen.indexOf(elemento);
  }

  longitud() {
    return this.total;
  }

  representar() {
    return this.almacen.toString();
  }

  insertar(elemento, referencia) {
    const pos = this.buscar(referencia);
    if (pos !== -1) {
      this.almacen.splice(pos + 1, 0, elemento);
      this.total++;
      return true;
    }
    return false;
  }

  vaciar() {
    this.almacen = [];
    this.total = 0;
    this.cursor = 0;
  }

  contiene(elemento) {
    return this.almacen.includes(elemento);
  }

  inicio() {
    this.cursor = 0;
  }

  fin() {
    this.cursor = this.total - 1;
  }

  retroceder() {
    if (this.cursor > 0) this.cursor--;
  }

  avanzar() {
    if (this.cursor < this.total - 1) this.cursor++;
  }

  posActual() {
    return this.cursor;
  }

  irA(posicion) {
    this.cursor = posicion;
  }

  obtenerActual() {
    return this.almacen[this.cursor];
  }
}

Mecanismo de Iteración

El iterador interno permite recorrer elementos sin exponer la estructura subyacente. Ventajas clave:

  • Independencia del almacenamiento interno
  • Actualizaicón automática al modificar la lista
  • Interfaz unificada para diferentes implementaciones

Validación de Funcionamiento

const prueba = new Lista();
prueba.agregar("A");
prueba.agregar("B");
prueba.agregar("C");

prueba.inicio();
console.log(prueba.obtenerActual()); // "A"

prueba.avanzar();
console.log(prueba.obtenerActual()); // "B"

prueba.fin();
console.log(prueba.obtenerActual()); // "C"

// Recorrido inverso
for(prueba.fin(); prueba.posActual() >= 0; prueba.retroceder()) {
  console.log(prueba.obtenerActual());
}

Etiquetas: JavaScript estructuras-de-datos lista Iterador TAD

Publicado el 6-27 21:39