miércoles, 21 de septiembre de 2011
Ruta de ida y vuelta
PilaString.h
#pragma once
class PilaString
{
private:
int size;
int cab;//Cabecera de la pila
public:
bool llena;
bool hasElements;
struct structPila
{
wchar_t *dato;
int tam;//Tamaño de cada elemento
} *pila;
public:
PilaString(int); //Constructor
bool push(System::String^ dato);
System::String^ pop ();
System::String^ top ();
int length();
System::String^ getPila ();
};
PilaString.cpp
#include "StdAfx.h"
#include "PilaString.h"
PilaString::PilaString(int tam)
{
size = tam;
cab = -1; //Cabecera apunta a -1, entonces no hay elementos en la pila
pila = new structPila[size];
llena = false;
hasElements = false;
}
//Inserta un elemento en la pila
bool PilaString::push(System::String^ dato)
{
if(llena)
return false;
else
{
cab++;
pila[cab].tam = dato->Length;
pila[cab].dato = new wchar_t[pila[cab].tam];
//Convertimos el string en un arreglo de caracteres!
for(int i=0;i<pila[cab].tam;i++)
pila[cab].dato[i] = dato[i];
hasElements = true;
if(cab == size-1)
llena = true;
return true;
}
}
//Extrae el elemento de la cabecera de la pila
System::String^ PilaString::pop()
{
if(hasElements)
{
System::String^ cadena = top();
cab--;
llena = false;
if(cab<0)
hasElements = false;
return cadena;
}
else
return "La pila está vacía";
}
//Muestra el elemento de la cabecera de la pila
System::String^ PilaString::top()
{
if(hasElements)
{
System::String^ cadena;
//Convertimos el arreglo de caracteres en un string !
for(int i=0;i<pila[cab].tam ;i++)
cadena += pila[cab].dato[i];
return cadena;
}
else
return "La pila está vacía";
}
int PilaString::length()
{
return cab+1;
}
System::String^ PilaString::getPila()
{
System::String^ pilaGeted = "";
for(int i=cab;i>=0;i--)
{
for(int j=0;j<pila[i].tam ;j++)
pilaGeted += pila[i].dato[j];
pilaGeted+="\r\n";//Salto de línea;
}
return pilaGeted;
}
Descargar la solución completa de Pilas
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario