Arreglo en c++???????????

Temas sobre programacion en C/C++ (no Visual C++)

Moderador:ivancp

Nagsein
Novato
Novato
Mensajes:1
Registrado:Dom Ago 07, 2011 2:24 am
Arreglo en c++???????????

Mensaje por Nagsein » Dom Ago 07, 2011 2:34 am

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;
}

Avatar de Usuario
ivancp
Colaborador
Colaborador
Mensajes:685
Registrado:Jue Sep 06, 2007 12:58 pm
Contactar:

Re: Arreglo en c++???????????

Mensaje por ivancp » Lun Ago 15, 2011 8:38 pm

No entiendo bien tu pregunta, pero supongo que para tener un array que contenga las pilas puedes hacer:

pila pilas[10];

y para acceder a cada elemento puedes hacer:

pilas[1].Push(40)
Imagen @latindev | Mi Blog
Por favor lee las reglas del foro

Responder