Demostración del funcionamiento de una cola
ColaString.h
#pragma once
class ColaString
{
private:
int size;
int last;//Ultimo elemento
public:
bool llena;
bool hasElements;
struct structCola
{
wchar_t *dato;
int tam;//Tamaño de cada elemento
} *cola;
public:
ColaString(int); //Constructor
bool encolar(System::String^ dato);
System::String^ desencolar();
System::String^ getPrimerElemento();
int length();
System::String^ getCola();
};
ColaString.cpp
#include "StdAfx.h"
#include "ColaString.h"
ColaString::ColaString(int tam)
{
size = tam;
last = -1; //lastecera apunta a -1, entonces no hay elementos en la cola
cola = new structCola[size];
llena = false;
hasElements = false;
}
//Inserta un elemento en la cola
bool ColaString::encolar(System::String^ dato)
{
if(llena)
return false;
else
{
last++;
cola[last].tam = dato->Length;
cola[last].dato = new wchar_t[cola[last].tam];
//Convertimos el string en un arreglo de caracteres!
for(int i=0;i<cola[last].tam;i++)
cola[last].dato[i] = dato[i];
hasElements = true;
if(last == size-1)
llena = true;
return true;
}
}
//Extrae el elemento de la lastecera de la cola
System::String^ ColaString::desencolar()
{
System::String^ cadena = getPrimerElemento();
if(cadena->CompareTo("La cola está vacía"))
{
System::String^ cadena = getPrimerElemento();
for(int i=1;i<=last;i++)//Avanzamos la cola
cola[i-1]=cola[i];
last--;
llena = false;
if(last<0)
hasElements = false;
}
return cadena;
}
//Muestra el elemento de la lastecera de la cola
System::String^ ColaString::getPrimerElemento()
{
if(hasElements)
{
System::String^ cadena;
//Convertimos el arreglo de caracteres en un string !
for(int i=0;i<cola[0].tam ;i++)
cadena += cola[0].dato[i];
return cadena;
}
else
return "La cola está vacía";
}
int ColaString::length()
{
return last+1;
}
System::String^ ColaString::getCola()
{
System::String^ colaGeted = "";
for(int i=0;i<=last;i++)
{
for(int j=0;j<cola[i].tam ;j++)
colaGeted += cola[i].dato[j];
colaGeted+="\r\n";//Salto de línea;
}
return colaGeted;
}
Descargar la solución para abrir con Visual Studio 2010
No hay comentarios:
Publicar un comentario