Você está na página 1de 3

FILAS

As filas são estruturas baseadas no princípio


FIFO (first in, first out), em que os elementos
que foram inseridos no início são os primeiros a
serem removidos. Uma fila possui duas funções
básicas: ENQUEUE, que adiciona um elemento ao
final da fila, e DEQUEUE, que remove o elemento
no início da fila. A operação DEQUEUE só pode ser
aplicado se a fila não estiver vazia, causando um
erro de underflow ou fila vazia se esta operação
for realizada nesta situação.
//==============Implementacao de Fila usando Lista Ligada======//
#include<stdio.h>
#include<math.h>

struct Fila{
float val;
struct Fila *Prox;
}*Ini=NULL,*Fim=NULL;

//================Prototipos das Funcoes Entrada e Saida=======//


int Entra(float valor);
int Saida(float *val);
void Imprime();
//==============================================================//
//===================Funcao de Inclusao===================//
int Entra(float valor)
{
struct Fila *Aux;
Aux=(struct Fila*)malloc(sizeof(struct Fila));
if(!Aux) // se não alocou o no (struct)
return 0;
Aux->val=valor;
Aux->Prox=NULL;
if(Fim){
Fim->Prox=Aux;
Fim=Aux;
}else
Ini=Fim=Aux;
return 1;
}

//====================Funcao de Retirada===================//
int Saida(float *valor)
{
struct Fila *Aux;
if(!ini) //Inicio==NULL(?) Se i
{
printf("Fila Vazia");
return 0;
}
Aux=Ini;
Ini=Aux->Prox;
if(!Ini) // Se Ini= NULL Faça
Fim=NULL;
*valor=Aux->val;
free(Aux);
return 1;
}
//=====================Impressao dos Valores da Fila=======//
void Imprime()
{
struct Fila *Aux;
for(Aux=Ini;Aux;Aux=Aux->Prox)
printf("Valores da Fila=%5.2f\n",Aux->val);
}
//==============================Funcao Menu===================//
int main(){
int i;
float val,k;
do{
printf("\nOpcoes:(1)-> Entra; (2)-> Sai; (3)-> Imprime;(0)->
Saida:");
scanf("%d",&i);
switch(i){
case 1: printf("\nEntre com um numero 'real':");
scanf("%f",&val);
Entra(val);
break;
case 2: if(Saida(&val)) //Se o retorno for verdadeiro
printf("Valor retirado=%5.2f",val);
break;
case 3: if(!Ini) //Se estiver vazio
printf("Fila Vazia");
else
Imprime();
break;
case 0: exit(0);
break;
default: printf("Opcao nao valida.\n");
}
}while(i);
return 0;
}

Você também pode gostar