Está en la página 1de 6

Pila <> clase de contenedores

En este artculo vamos a discutir acerca de un simple contenedor de clase de pila. Esto representa una pila de tipo de datos. <> De pila se modela utilizando un deque (o una cola de doble composicin). Todos los operadores <,>, <=,> =,! =, = = Estn sobrecargados de la clase de pila de contenedores. Eso significa que usted puede comprobar dos pilas como dos nmeros enteros o dos tipos de datos incorporada. Por ejemplo, hay dos pilas de S1 y S2, y desea comparar, se puede escribir

if (s1 == s2) y as sucesivamente para otros operadores .. pila <> - uno sobre el otro

Mtodos de clase de pila


empty () get_allocator () pop () push () size () top () operador == operador <= operador> = operador! = operador < operador>

Aqu vamos a discutir acerca de cada mtodo, le mostrar lo que hace y luego, al final vamos a dar ejemplo en el que usted puede usar estos mtodos a la vez .... empty () y tamao () El mtodo de vaco () se utiliza para comprobar si una pila est vaca o no. Este mtodo devuelve un valor bool. El valor es verdadero si la pila est vaca, de lo contrario, devolver el valor falso. Aqu hay un cdigo que te har comprender mejor la forma vaca () se utiliza ...

size () devuelve el nmero de elementos presentes en la pila. # include <iostream> # include <stack> # include <conio.h> using namespace std; int main () ( pila <char> cdigos;

codes.push ( 'a'); codes.push ( 'b'); cout << "El tamao de la pila es:" <<codes.size <<endl; //checking whether the stack is empty or not ? if (codes.empty () == true) cout << "La pila est vaca"; / / imprime el tamao de la pila de getch (); return 0; )
Usted puede eliminar la "verdadera" en la parte superior de cada bloque. Sin embargo, es recomendable escribir verdad, porque hace que su intencin ms clara a otros programadores .. La salida de este programa ser de 2, ya que hay 2 elementos en la pila. push () y top () push () se utiliza para introducir un elemento en la pila superior. Slo tenemos que pasar el argumento a favor de impulsar en la parte superior de la pila. El tipo de retorno de este mtodo es nulo. As que nada se devuelve slo los valores se insertan en la pila superior. arriba (), como sugiere el nombre utilizado para el pop MRA (aadidas ms recientemente) elemento de la pila que se encuentra en la parte superior. El cdigo de abajo pone un nmero entero en una pila de enteros y muestra el elemento de la ERM.

# include <iostream> # include <stack> # include <conio.h> using namespace std; int main () ( pila <int> cdigos; for (int i = 0; i <10; i + +) / / elementos de empujar en la parte superior de la pila. codes.push (i); cout <<codes.top () <<endl; / / Mostrar el elemento superior getch (); return 0; ) La salida de este cdigo ser de 9.

FUNCIONES

10 Pilas - Presentation Transcript 1. 2.5 Pilas (stack) Apoyo SSD5

2. Pilas Una pila es una estructura de datos lineal que brinda acceso slo al ltimo elemento agregado. En una pila, los elementos slo pueden ser agregados y eliminados del final de una secuencia. Esto lleva a la poltica de insercin y eliminacin de elementos conocida como \"ltimo en Entrar, Primero en Salir\". Mtl Lourdes Cahuich 2

3. Pilas Dicho de otra forma, el siguiente elemento que puede ser eliminado de una pila es siempre el elemento que fue agregado ms recientemente en la pila. Siempre podemos agregar ms elementos a la pila, pero cada vez que lo hacemos, el elemento agregado ms recientemente se convierte en el elemento que puede ser eliminado primero. Mtl Lourdes Cahuich 3 4. Mtl Lourdes Cahuich 4

5. Pilas Con este modelo en mente, pasemos a aadir unos cuantos elementos a una pila que inicialmente se encuentra vaca. Primero aadimos (generalmente se le conoce como \"empujar\" (pushing) a la fila un elemento con el valor de 1. Mtl Lourdes Cahuich 5

6. Mtl Lourdes Cahuich 6

7. Pilas El elemento sombreado en gris est ahora en la parte ms alta de la pila. Al aadir el segundo elemento se esconde el primer elemento debido a que el segundo elemento es ahora el nico elemento que puede ser eliminado. Adems, es el nico elemento de la pila a cuyo valor podemos acceder. Mtl Lourdes Cahuich 7

8. Pilas Esta es una propiedad importante de la estructura de datos de pilas que difiere de los vectores y los deques. En una pila, tenemos acceso al nmero de elementos almacenados en la estructura de datos, pero no tenemos acceso a todos los valores de los elementos Mtl Lourdes Cahuich 8

9. Pilas Si furamos a eliminar un elemento de la pila (por lo general se le conoce como \"popping\"), nuestra pila se vera como en la figura de enmedio Hemos examinado cmo operan las pilas y hemos visto las operaciones principales asociadas con las pilas. En resumen, \"empujando\" o \"pushing\" agrega un elemento en la parte ms alta de la pila, y \"popping\" elimina el elemento que se encuentra ms arriba de la fila. Mtl Lourdes Cahuich 9

10.Aplicaciones de Pilas Las pilas son una estructura importante en la Ciencia Computacional, y tienen muchas aplicaciones diferentes. Estas aplicaciones varan de tareas sencillas como invertir los caracteres en una cadena, a tareas ms complejas como la evaluacin de expresiones aritmticas o la navegacin de laberintos. Mtl Lourdes Cahuich 10

11. Aplicaciones de Pilas Es importante tener un entendimiento slido del concepto de una pila, debido a que ms adelante encontraremos muchos usos de pilas en el contexto de otras estructuras de datos y algoritmos. Mtl Lourdes Cahuich 11

12. Cmo Usar el Adaptador stack de STL El adaptador stack de STL ofrece una interfaz adecuada para ser usada como una pila. A continuacin muestra todas las funciones miembro del adaptador stack Mtl Lourdes Cahuich 12

13. #include <iostream> #include <string> #include <cstdlib> #include <stack> using namespace std; int main(int argc, char* argv[]) { stack<int> s; // push and pop s.push(1); s.pop(); // top s.push(10); s.push(11); cout << s.top() << endl; // size and empty cout << s.size() << endl; cout << s.empty() << endl; return EXIT_SUCCESS; } Mtl Lourdes Cahuich 13

14.Adaptador stack Solamente existen seis funciones miembro en la interfaz del adaptador stack. Los mtodos push y pop insertan y eliminan elementos de una pila, respectivamente, y el mtodo top regresa una referencia a los datos almacenados arriba de la pila. Mtl Lourdes Cahuich 14

15.Adaptador stack Al igual que el adaptador queue, el mtodo size regresa el nmero de elementos almacenados en una pila y el mtodo empty despliega true si una fila est vaca y false si la pila no est vaca. Para usar el adaptador stack de STL en un programa, un programador debe incluir la biblioteca <stack>. Mtl Lourdes Cahuich 15 16.Adaptador stack Este listado despliega las lneas de un archivo texto en orden inverso. Una pila provee una estructura de datos natural para resolver este problema. Mtl Lourdes Cahuich 16

ALGORITMO DE LA BURBUJA EN C++

Descripcin.
Este es el algoritmo ms sencillo probablemente. Ideal para empezar. Consiste en ciclar repetidamente a travs de la lista, comparando elementos adyacentes de dos en dos. Si un elemento es mayor que el que est en la siguiente posicin se intercambian. Sencillo no?

#include <iostream.h> void mostrarArreglo(const int[], int); void ordenarArreglo(int[], int); void intercambiar(int&, int&); int main() { const int tamano = 15; int arreglo[tamano] = {25,17,13,16,41,32,12,115,95,84,54,63,78,21,10 }; cout << "Arreglo antes de ordenarse: " <<endl; mostrarArreglo(arreglo,tamano); cout << "Arreglo despues de ordenarse: " <<endl; ordenarArreglo(arreglo,tamano); mostrarArreglo(arreglo,tamano); cout << "Fin del programa :)" << endl; return 0; }//fin de main void mostrarArreglo(const int arreglo[], int tamano) { for (int i = 0 ; i < tamano ; i++) cout << "arreglo["<< i << "]=" << arreglo[i]<< endl; } void ordenarArreglo(int arreglo[], int tamano) { for (int i = 0; i<tamano-1 ; i++) for (int j = 0; j<tamano-1 ; j++) if(arreglo[j] < arreglo[j+1]) intercambiar(arreglo[j],arreglo[j+1]); } void intercambiar(int &a, int &b) { int tmp = b; b = a; a = tmp;

Anlisis del algoritmo.


ste es el anlisis para la versin no optimizada del algoritmo:

Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable. Requerimientos de Memoria: Este algoritmo slo requiere de una variable adicional para realizar los intercambios. Tiempo de Ejecucin: El ciclo interno se ejecuta n veces para una lista de n elementos. El ciclo externo tambin se ejecuta n veces. Es decir, la complejidad es n * n = O(n2). El comportamiento del caso promedio depende del orden de entrada de los datos, pero es slo un poco mejor que el del peor caso, y sigue siendo O(n2).

Ventajas:

Fcil implementacin. No requiere memoria adicional.

Desventajas:

Muy lento. Realiza numerosas comparaciones. Realiza numerosos intercambios.

Este algoritmo es uno de los ms pobres en rendimiento. Si miras la demostracin te dars cuenta de ello. No es recomendable usarlo. Tan slo est aqu para que lo conozcas, y porque su sencillez lo hace bueno para empezar. Ya veremos otros mucho mejores. Ahora te recomiendo que hagas un programa y lo pruebes. Si tienes dudas mira el programa de ejemplo.