Anuncios

Bienvenidos sean a este post, hoy veremos una estructura de datos.

Anuncios
Anuncios

Que es una estructura de datos? Podemos considerarlo como un contenedor pero no es independiente sino que se utiliza como envoltorio de un contenedor. Este se implementa con el uso de la libreria stack y al igual que con los contenedores es miembro del namespace std. Este es un bloque asignado en forma continua con la posibilidad de crecer o encoger en su parte posterior. Para implementar solamente se necesita un contenedor de secuencia con soporte de los metodos back, push_back y pop_back. Si bien pueden manejar cualquier tipo de datos, al igual que sucede con cualquier tipo de contenedor siempre deben ser del mismo tipo. Este trabaja con la mecanica LIFO, ultimo en entrar primero en salir por sus siglas en ingles, la parte superior de stack suele denominarse como top de stack y las acciones que usaremos son push para agregar y pop para quitar. Veamos un ejemplo para entenderlo:

#include <iostream>
#include <string.h>
#include <stack>


int main()
{
        std::stack< std::string > coches;
        coches.push("VW");
        coches.push("AUDI");
        coches.push("FORD");
        coches.push("VOLVO");
        std::cout << coches.top() << std::endl;

        return 0;
}
Anuncios

Primero importaremos tres librerias, siendo la primera la estandar para manejar nuestro codigo. La segunda es para poder utilizar los tipos string y la ultima para poder crear nuestros stack. Lo siguiente sera crear un objeto de tipo stack y almacenara valores de tipo string. Luego mediante el uso de push agregaremos varias marcas de coches al stack. Y por ultimo, mostraremos el valor de arriba en el stack con el uso de la funcion top. Compilemos y veamos como es la salida:

$ ./stl
VOLVO
$
Anuncios

Como pueden verr nos mostro el ultimo valor. Esto es asi porque recuerden que stack siempre trabaja con la parte posterior del mismo. Volvamos al codigo anterior y hagamos la siguiente modificacion:

#include <iostream>
#include <string.h>
#include <stack>


int main()
{
        std::stack<std::string> coches;
        coches.push("VW");
        coches.push("AUDI");
        coches.push("FORD");
        coches.push("VOLVO");
        std::cout << coches.top() << std::endl;
        coches.top() = "VW";
        std::cout << coches.top() << std::endl;

        return 0;
}
Anuncios

En este caso, agregamos dos lineas al codigo anterior. La primera es nuevamente el uso de la funcion top y le pasaremos uno de los valores anteriores y la otra es para mostrar nuevamente el valor de top. Compilemos y veamos como es la salida:

$ ./stl
VOLVO
VW
$
Anuncios

Como pueden ver ahora establecimos un nuevo valor en la parte posteriorr y ahora top nos devolvera ese nuevo valor. Para finalizar, volvemos a tomar el codigo anterior y lo modificaremos de la siguiente manera:

#include <iostream>
#include <string.h>
#include <stack>


int main()
{
        std::stack<std::string> coches;
        coches.push("VW");
        coches.push("AUDI");
        coches.push("FORD");
        coches.push("VOLVO");
        std::cout << coches.top() << std::endl;
        coches.pop();
        std::cout << coches.top() << std::endl;

        return 0;
}
Anuncios

En este caso, solamente hicimos una pequeña modificacion. Y fue cambiar la linea para modificar el top por un llamado a la funcion pop para eliminar el valor que esta en top. Compilemos y veamos como es la salida:

$ ./stl
VOLVO
FORD
$
Anuncios

Observen como primero nos muestra como valor de top al ultimo ingresado y como despues de ejecutado la funcion pop, el nuevo valor en top es el valor ingresado anterior al eliminado. Esta es la forma basica de como podemos manejar los datos agregados en nuestro stack. Tal como dijimos, si bien se lo puede considerar como un contenedor. En realidad, es mas bien como una estructura de datos. Dado que no manejaremos la inforrmacion directamente sino a medida que la vayamos agregando o eliminando de la misma.

Anuncios

En resumen, hoy hemos visto stack, que es, para que sirve, como se utiliza, y un ejemplo practico con varias opciones para manipular la informacion. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donatión

It’s for site maintenance, thanks!

$1.50