Está en la página 1de 3

1

Agrega_Clase_Pila.cpp: archivo de proyecto principal.


Pila: Estructura de datos lineal de objetos encadenados de forma tal que
estos se obtienen por un solo lado de la estructura siguiendo un sistema
LIFO (Last Input, First Output).
En el Tope queda el último elemento entrado.
En el Fondo queda el primer elemento entrado.
La pila es una estructura finita.

//#include "stdafx.h"
#include "iostream"
//using namespace System;
using namespace std;
struct nodo
{
int dato;
nodo* sig;
};
class Pila
{
private:
nodo* tope;//tope es la entrada a la pila
public:
Pila();
void meter();
void sacar();
~Pila();
void limpiarPila(); //Quita todos los elementos
//de la pila
int cimaPila(); //Obtiene el elemento Cima
//de la pila
int longitudPila(); //Obtiene la cantidad de
//elementos de la pila
void desplegarPila();//Muestra los elementos de la pila
};
Pila::Pila()
{
tope = NULL;
}
Pila::~Pila()
{
nodo* apunt;
apunt = tope;
while (tope != NULL)
{
tope = apunt->sig;
delete apunt;
apunt = tope;
}
}
void Pila::meter() //Insertar (Push) elementos en la pila
{
char resp;
nodo *nuevo;
do
{
nuevo = new nodo;
if (nuevo == NULL)
{
2

cout << "El sistema no asigno memoria" << endl;


break;
}
else
{
cout << "Entre elemento a agregar a la pila" << endl;
cin >> nuevo->dato;
nuevo->sig = tope;
tope = nuevo;
cout<<"Desea agregar otro dato a la pila ? (s/n)"<<endl;
cin >> resp;
resp = tolower(resp);
}
} while (resp == 's');
}
void Pila::sacar() //Quitar (Pop)elementos de la pila
{
nodo* apunt;
char resp;
do
{
apunt = tope;
if (apunt == NULL)
{
cout<<"La pila esta vacia"<<endl;
break;
}
else
{
cout<<"El valor atendido fue "<<apunt->dato <<endl;
tope = tope->sig;
delete apunt;
cout<<"Desea sacar otro elemento de la pila ? (s/n)"<<endl;
cin >> resp;
resp = tolower(resp);
}
} while (resp == 's');
}
void Pila::limpiarPila()
{

}
int Pila::cimaPila()
{
return 0;
}
int Pila::longitudPila()
{
return 0;
}
void Pila::desplegarPila()
{

}
void main()
{
Pila p;
p.meter();
3

cout<<"Empieza a sacar elementos de la pila"<<endl;


p.sacar();
system("pause");
}

GUIA PARA EL TALLER DE LA ESTRUCTURA PILA

a. Hacer el esquema de memoria y la prueba de escritorio (construir tabla) con los valores
de cada variable, para cada una de las funciones: main(), meter(), sacar().

Para lo anterior agregue los nodos en el orden indicado por los numerales teniendo en
cuenta que el sistema le asigna respectivamente las siguientes direcciones de memoria:
X10, X20, X30 y X40.

1. Agregue nodo con el valor de 10 y dibuje la pila.


2. Agregue nodo con el valor de 30 y dibuje la pila.
3. Agregue nodo con el valor de 20 y dibuje la pila.
4. Agregue nodo con el valor de 50 y dibuje la pila.

Luego saque los nodos en la forma que lo indica el programa. Cada vez que saque un
nodo debe dibujar la pila.

b. Construya las funciones limpiarPila(), cimaPila(), longitudPila() y desplegarPila()


teniendo en cuenta los comentarios que aparecen en la definición de la clase Pila.

c) Construir menú de opciones para ejecutar en la pila las siguientes operaciones:

 Meter un elemento en la pila.


 Sacar un elemento de la pila.
 Mostrar la longitud de la pila.
 Mostrar la cima de la pila.
 Limpiar la pila.
 Desplegar la Pila.

También podría gustarte