← Estructuras de Datos
Módulo 1 Lección 1 de 5 ~20 min lectura

Arreglos y listas enlazadas

Imagina que tienes que guardar las notas de todos tus estudiantes. Podrías escribirlas en papeles sueltos, pero sería un desastre encontrar una nota específica. Lo natural es organizarlas: en una lista numerada, en un cuaderno, en una hoja de cálculo.

Las estructuras de datos hacen exactamente eso para los programas: definen cómo organizar información en memoria para poder usarla de manera eficiente. Empezamos con las más fundamentales: los arreglos y las listas enlazadas.

El arreglo: celdas en fila

Un arreglo es una colección de elementos guardados en posiciones consecutivas en memoria. Puedes imaginarlo como una fila de cajitas numeradas, cada una con un valor adentro.

Arreglo con 6 elementos — temperaturas de la semana
18[0]
21[1]
25[2]
23[3]
19[4]
17[5]

El elemento resaltado es temperaturas[2] — el índice siempre empieza en 0, no en 1. Para acceder al tercer día, escribes [2].

¿Por qué empieza en 0? El índice no es un número de orden sino un desplazamiento desde el inicio. El primer elemento está a 0 posiciones del comienzo, el segundo a 1 posición, y así. Es una decisión histórica heredada del lenguaje C que mantienen casi todos los lenguajes modernos.

Acceso directo

La gran ventaja del arreglo es que acceder a cualquier elemento tarda el mismo tiempo, sin importar su posición. Si quieres el elemento en la posición 500, el computador va directo allá — no recorre los 499 anteriores.

// Crear un arreglo de 5 enteros
notas = [85, 92, 78, 95, 88]
 
// Leer el tercer elemento (índice 2)
tercera_nota = notas[2] // → 78
 
// Modificar el primer elemento (índice 0)
notas[0] = 90 // ahora notas = [90, 92, 78, 95, 88]

La lista enlazada: nodos con punteros

A diferencia del arreglo, los elementos de una lista enlazada no tienen que estar juntos en memoria. Cada elemento (llamado nodo) guarda dos cosas: su valor y una referencia (puntero) al siguiente nodo.

Lista enlazada con 4 nodos
12
sig→
——
45
sig→
——
7
sig→
——
33
sig→
——
null

Cada nodo apunta al siguiente. El último apunta a null para indicar que la lista terminó. La lista vive esparcida por la memoria — los nodos no están uno al lado del otro.

La ventaja es que insertar o eliminar elementos es muy rápido: solo hay que actualizar los punteros, sin mover nada. La desventaja es que para llegar al elemento 500, hay que recorrer los 499 anteriores.

¿Cuándo usar cada una?

Operación Arreglo Lista enlazada
Acceder a un elemento por índice Inmediato ✓ Hay que recorrer
Insertar al inicio Lento — mueve todo Inmediato ✓
Insertar al final Inmediato ✓ Depende (con cola: inmediato)
Eliminar en el medio Lento — mueve todo Rápido (solo punteros) ✓
Uso de memoria Compacto ✓ Extra por punteros
Tamaño fijo vs dinámico Generalmente fijo Crece y encoge ✓
Regla práctica Si necesitas acceder mucho por índice (como recorrer una lista para mostrarla), usa un arreglo. Si necesitas insertar y eliminar elementos frecuentemente (como una lista de tareas pendientes que cambia todo el tiempo), una lista enlazada es mejor.

Resumen