Listas enlazadas
En esta Página
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:
- Implementación de pilas y colas.
- 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.
- Asignación de memoria dinámica: se utiliza una lista enlazada de bloques libres.
- Mantenimiento del directorio de nombres.
- 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