Preciso criar uma fila em que cada posição/item da fila armazene um vetor de inteiros, não faço ideia de como implementar isso, ja tenho a fila de apenas um inteiro. (Fila circular)
fila.h:
#include <iostream>
using namespace std;
#define MAX 5
typedef struct
{
int inicio, fim;
int vetor[MAX];
}Fila;
int incremento(int i)
{
return ((i + 1) % MAX);
}
Fila* cria()
{
//Nova instância para a estrutura
//alocação dinâmica de memoria
Fila* f = new Fila();//cria ponteiro, não pode der ponteiro sem indereço ou locação dinamica de endereço
//Fila* f = new Fila();- cria uma nova fila
f->inicio = 0;
f->fim = 0;
return f;
}
int cheia(Fila* f)
{
return(incremento(f->fim) == f->inicio);
}
int vazia(Fila* f)
{
return (f->inicio == f->fim);
}
void enqueue(Fila*f, int carac)
{
if (cheia(f))
{
//Se entrar aqui para o codigo, por causa do exit
// por isso não precisa de else
cout << "Fila cheia";
exit(1);
}
//iNSERIR VALOR NA FILA
f->vetor[f->fim] = carac;
f->fim = incremento(f->fim);
}
int dequeue(Fila*f)
{
if (vazia(f))
{
cout << "Fila vazia";
exit(1);
}
//retira valor da fila
int valor;
valor = f->vetor[f->inicio];
f->inicio = incremento(f->inicio);
return valor;
}
//remove memoria alocada dinamicamente
void libera(Fila* f)
{
delete f;
}
fila.cpp
#include <iostream>
#include "fila.h"
#include <locale>
using namespace std;
void main() {
setlocale(LC_ALL, "Portuguese");
int opc = 0, vlr;
Fila* f = new Fila();
while (opc != 3)
{
cout << endl << "1- Inserir" << endl;
cout << "2- Remover" << endl;
cout << "3- Sair" << endl;
cout << "Digite a opção" << endl;
cin >> opc;
switch (opc)
{
case 1:
{
cout << "Digite o valor a ser inserido" << endl;
cin >> vlr;
enqueue(f, vlr);
break;
}
case 2:
{
cout << "Item removido: " << dequeue(f) << endl;
break;
}
}
}
}