/*************************************************************/
// 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:
Publicar un comentario