URGENTE
Lo que necesito es :
crear un arreglo de tamaño 10 que contendrá :
-puntero a una clase PILA.
-tamaño máximo de la pila
Este es el código de la pila:
// Pila en C++
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
class nodo {
public:
nodo(int v, nodo *sig = NULL)
{
valor = v;
siguiente = sig;
}
private:
int valor;
nodo *siguiente;
friend class pila;
};
typedef nodo *pnodo;
class pila {
public:
pila(int ta) : ultimo(NULL) {tamano = ta; contador =-1;}
~pila();
void Push(int v);
int Pop();
void Vacia();
private:
int tamano;
int contador;
pnodo ultimo;
};
pila::~pila()
{
pnodo aux;
while(ultimo) {
aux = ultimo;
ultimo = ultimo->siguiente;
delete aux;
}
}
void pila::Push(int v)//Push es para meter elementos a la pila
{
pnodo nuevo;//Crea un puntero "nuevo" de tipo pnodo
contador++;
if(contador < tamano) {
/* Crear un nodo nuevo */
nuevo = new nodo(v, ultimo);
/* Ahora, el comienzo de nuestra pila es en nuevo nodo */
ultimo = nuevo;//Ultimo apunta a nuevo
}
else
{
cout << "Pila llena" << endl;
}
}
void pila::Vacia()
{
if(contador < 0) {cout <<"Pila Vacia"<< endl;}
else{cout <<"Tiene elementos"<< endl;}
}
int pila::Pop()//Pop es para sacar un elemento de la pila
{
pnodo nodo; /* variable auxiliar para manipular nodo */
int v; /* variable auxiliar para retorno */
contador--;
if(!ultimo) return 0; /* Si no hay nodos en la pila retornamos 0 */
/* Nodo apunta al primer elemento de la pila */
nodo = ultimo;
/* Asignamos a pila toda la pila menos el primer elemento */
ultimo = nodo->siguiente;//ultimo apunta al elemento siguiente de ese nodo
/* Guardamos el valor de retorno */
v = nodo->valor;
/* Borrar el nodo */
delete nodo;
return v;
}
int main()
{
typedef pila *punter;
pila Pila(3);//bjeto de tipo pila
/*
Dispara el constructor y dice que ultimo es igual a NULL
*/
Pila.Push(20);//Ingresa un elemento a la Pila
cout << "Push(20)" << endl;
Pila.Push(10);//Ingresa un elemento a la Pila
cout << "Push(10)" << endl;
//cout << "Pop() = " << Pila.Pop() << endl;
Pila.Push(40);//Ingresa un elemento a la Pila
cout << "Push(40)" << endl;
Pila.Push(30);//Ingresa un elemento a la Pila
cin.get();
return 0;
}


