#include <stdio.h>
#include <stdlib.h> // para alocar memória (malloc)
// Aqui definimos a estrutura que será usada
// para gerar a fila, a qual ira conter apenas
// o valor a ser armazenado e se sucessor.
typedef struct estru
{
int num;
struct estru *prox; // *prox será outra estrutura
// dentro da mesma
} fila; // nome que usaremos para chamar essa estrutura
// 2 ponteiros de apoio, inicio e fim da fila
fila *p, *q, *start=NULL, *end;
// Função responsavel por adicionar um nova estrtura a fila
pushToFila(int val)
{
p = malloc(sizeof(fila)); // ponteiro do tamanho da estrutura
p->num = val; // estrura num recebe um valor
// caso seja o primeiro valor,
// o começo da fila é definido
if(start == NULL) start = p;
// Caso contrario q->prox (nó anterior) recebe esse nó
else q->prox = p;
q = p; // esse nó é salvo para ser usado em seguida
end = p; // final da fila é registrado
}
// no caso de uma fila, quando os valores são mostrados tbm são removidos
// da fila pois ja cumpriram seu propósito;
showFila()
{
while(1)
{
printf("%d saiu da fila\n", start->num); // Mostra valor dentro do nó
if(start == end) break; // Caso p seja igual a fim, a fila foi encerrada
start = start->prox; // fila avança
}
printf("\nFim da fila");
}
int main(void) {
int numero;
while(1)
{
printf("Digite o valor a ser add ou -1 para sair: ");
scanf("%d", &numero);
printf("%d\n", numero);
if(numero == -1) break; // se numero for -1, o loop é qubrado
pushToFila(numero);
}
printf("\n");
showFila(); // Mostra fila gerada;
free(start);
return 0;
}