Pilas y colas con arrays
Un estructura muy propia de los lenguajes de programación de cualquier nivel son las estructuras de almacenamiento de datos llamadas pilas y colas.
Las pilas y las colas son estructuras de datos secuenciales donde los valores se introducen y se sacan por los extremos.
Como una pila de platos unos sobre otros: se ponen platos por encima y se sacan por encima, de manera que el ultimo plato en entrar es el primero en ser sacado.
O como una cola (fila) de personas esperando el bus: salen por un extremo y entran por el extremo contrario. El primero que llegó es el primero que sale.
Estas estructuras se pueden implementar mediante arrays gracias a o dos pares de métodos complementarios:
- push()/pop(): meten o extraen elementos por el final del array
- unshift()/shift(): meten o extraen elementos por el principio del array
- push(valor ) / pop()
- Estos métodos permiten meter/sacar un elemento del array por el extremo final.
Así array.push(valor) añade un nuevo elemento al array con el valor dado por su argumento.
Por su parte que array.pop() extrae del array su último elemento. En ambos casos el array cambia.
var lista = new Array("Maria", "Pedro", "Julio");
var ultimo = lista.pop();
console.log(ultimo); //Julio
lista.push("Luisa", "Ana");
console.log(lista); //Maria, Pedro, Luisa, Ana
En el ejemplo se extrajo el último elemento ("Julio") y luego se añadieron dos nuevos ("Luisa" y "Ana"). Como ves el array lista ha cambiado, no se crea un nuevo array sino que se modifica el actual.
- unshift(valor) / shift()
- El método array.unshift(valor) introduce un elemento por el principio del array, empujando cada elemento a la siguiente posición. El array aumenta su longitud.
Por su parte array.shift() extrae el primer elemento del array, y reduce su longitud al desplazar los elementos restantes hacia el principio del array.
var plazas = [10,10,10];
plazas.unshift(15,20)
console.log("Depues de agregar dos elementos: "+plazas);
var quitados = plazas.shift() ;
console.log("Después de quitar un elemento: "+plazas);
console.log("Se extrajo "+quitados);
En los ejemplos por simplicidad, solo se agregan elementos primitivos (cadenas y números en este caso) pero este método permite agregar objetos, incluso agregar arrays completos, creando arrays dentro de arrays: los bidimensionales.