#include <iostream>
using namespace std;
struct No
{
int Info;
No *Lig;
};
typedef No *NoPtr;
struct Fila
{
NoPtr Com;
int Nro;
NoPtr Fim;
};
void IniciaFila(Fila &F)
{
F.Nro = 0;
F.Com = NULL;
F.Fim = NULL;
}
bool FilaVazia(Fila F)
{
return !F.Nro;
}
void InsereFila(Fila &F, int Novo)
{
NoPtr P = new No;
P->Info = Novo;
P->Lig = NULL;
if (F.Nro == 0)
F.Com = F.Fim = P;
else
{
F.Fim->Lig = P;
F.Fim = P;
}
F.Nro++;
}
bool RetiraFila(Fila &F, int &Valor)
{
if (FilaVazia(F))
return false;
else
{
NoPtr P = F.Com;
Valor = P->Info;
F.Com = P->Lig;
F.Nro--;
if (F.Nro == 0)
F.Fim = NULL;
delete P;
}
return true;
}
int main()
{
Fila F;
IniciaFila(F);
InsereFila(F, 10);
InsereFila(F, 10);
InsereFila(F, 20);
InsereFila(F, 20);
InsereFila(F, 30);
InsereFila(F, 30);
InsereFila(F, 20);
InsereFila(F, 10);
InsereFila(F, 10);
InsereFila(F, 20);
InsereFila(F, 20);
InsereFila(F, 120);
return 0;
}