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.
El elemento resaltado es temperaturas[2] — el índice siempre empieza en 0, no en 1.
Para acceder al tercer día, escribes [2].
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.
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.
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 ✓ |
Resumen
- Un arreglo guarda elementos juntos en memoria — acceso rápido, inserción lenta.
- Una lista enlazada usa nodos con punteros — inserción rápida, acceso lento.
- Los índices de los arreglos empiezan en 0.
- No hay una estructura "mejor" — depende del uso.