Kód Fronta v CPP
Z CHWiki
struct QUEUE
{
int Head;
int Tail;
int Size;
QUEUEITEM ** Data;
};
bool QUEUE_isempty(QUEUE * queue)
{
return (queue->Head == queue->Tail);
}
bool QUEUE_isfull(QUEUE * queue)
{
return ((queue->Tail - queue->Head) == queue->Size);
}
QUEUEITEM * QUEUE_get(QUEUE * queue)
{
if(!QUEUE_isempty(queue))
{
QUEUEITEM * qi = queue->Data[queue->Head % queue->Size];
queue->Head++;
return qi;
}
}
void QUEUE_put(QUEUE * queue, QUEUEITEM * qi)
{
if(!QUEUE_isfull(queue))
{
queue->Data[queue->Tail % queue->Size] = qi;
queue->Tail++;
}
}
void QUEUE_init(QUEUE ** queue, int size)
{
*queue = new QUEUE();
(*queue)->Head = 0;
(*queue)->Tail = 0;
(*queue)->Size = size;
(*queue)->Data = new QUEUEITEM*[size];
}
void QUEUE_destroy(QUEUE ** queue)
{
for(int i = (*queue)->Head; i < (*queue)->Tail; i++)
{
delete (*queue)->Data[i % queue->Size];
}
delete (*queue)->Data;
delete (*queue);
*queue = NULL;
}
dá sa riešiť aj pomocou STL
#include <queue> queue<QUEUETYPE> fronta; fronta.pop(); - odobere prvok zo zaciatku fronta.push(QUEUETYPE); - prida prvok na koniec fronta.front(); - vrati prvy prvok fronta.empty(); - vrati true, ak je fronta prazdna
