lunes, 3 de marzo de 2008

[Código Fuente] Pila Estática


/*************************************************************/
// pila.cpp
/*************************************************************/
#include <iostream>
#include "pila.h"

using namespace std;

Pila::Pila()
{ cima = -
1;
}

bool Pila::Apilar(TipoDato &elemento)
{
bool res;
if(cima == MAX-1)
{ cerr <<
"Desbordamiento de Pila (Overflow)" << endl;
res=
false;
}
else

{cima++;
pila[cima] = elemento;
res =
true;
}
return res;


}

bool Pila::Desapilar()
{
bool res;
if(cima == -1)
{ cerr <<
"Se esta intentando quitar un elemento de una pila vacia (underflow)" << endl;
res=
false;
}
else

{cima--;
res =
true;
}
return res;


}

void Pila::VerPila()
{
for(int i=0;i<=cima;i++)
cout << pila[i] << endl;

}


bool Pila::CimaPila(TipoDato &elemento)
{
bool res;
if(PilaVacia())//(cima == -1)
{cerr <<
"Se esta intentando quitar un elemento de una pila vacia (underflow)" << endl;
res =
false;
}
else

{ pila[cima];
cima--;
res =
true;
}

return res;


}

bool Pila::PilaVacia()
{
return cima == -1;
}

void Pila::LimpiarPila()
{
cima = -
1;
}


bool Pila::Iguales(Pila p)
{
TipoDato a , b;
TipoDato array[MAX];

bool iguales=false;

int i=cima;
while (p.CimaPila(b) && array[i--]==b)
{
p.Desapilar();
}
if(i<0 && p.PilaVacia())
iguales=
true;

return iguales;
}

/*************************************************************/
// pila.h
/*************************************************************/

#ifndef _PILA_H
#define _PILA_H

class Pila
{
private:
static const int MAX = 100;
typedef int TipoDato;
TipoDato pila[MAX];
int cima;

public:
Pila();
bool Apilar(TipoDato &elemento);
bool Desapilar();
bool CimaPila(TipoDato &elemento);
void LimpiarPila();
void VerPila();
bool PilaVacia();
bool Iguales(Pila p);

};


#endif

No hay comentarios: