Você está na página 1de 2

#include <stdio.

h>
#include <stdlib.h>
typedef struct{
int *Vetor;
int tamVetor;
int inicio; /* indexa o início da Fila */
int fim; /*indexa o final da Fila */
int tamFila; /* testes de vazia/cheia */
}Fila;
Fila *cria_fila(){
int t;
printf("Informe o tamanho da fila: ");
scanf("%d",&t);
Fila *f=(Fila*)malloc(sizeof(Fila));
f->inicio=0;
f->fim=0;
f->tamVetor=t;
f->tamFila=0;
f->Vetor=(int*)malloc(t*sizeof(int));
return f;
}
int fila_cheia(Fila *f){
return(f->fim==f->tamVetor);
}
Fila *inserção(Fila *f, int n ){ /* fila cheia ? fim== tamVetor */
if(f->fim==f->){ /* tamFila = FIM INICIO */
if(f->tamFila < f->tamVetor){
int i;
for(i=0; i<f->tamFila; i++)
f->Vetor[i]=f->Vetor[i+inicio];
f->fim = f->fim - f->inicio;
f->inicio = 0; // inserção no final da fila;
}
else{
printf("Sua fila esta cheia! ");
return;
}
}
f->Vetor[f->fim]=n;
f->fim++;
}
int fila_retira(Fila *f){
int n;
if(fila_cheia(f)){
printf("fila vazia.\n");
return;
} //retira o elemento da fila
v=f->vet[f->ini];
f->inicio++;
return n;
}
main(){
int opmenu, item;
//criafila
Fila *fi=cria_fila();
do{
system("cls");
printf("Escolha uma das opcoes do menu: \n");
printf("1. Enfilera (queue)\n");
printf("2. Retira (dequeue)\n");
printf("3. Mostra a fila\n");
printf("4. Fim\n");
scanf("%d",&opmenu);
switch(opmenu){
case 1:
printf("Informe o item que deseja adicionar: ");
scanf("%d",&item);
enfilera(fi,item);
break;
case 2:
item=retira(fi);
if(item >0)
printf("elemento retirado = %d\n",item);
break;
case 3:
mostrafila(fi);
break;
}//fim switch
printf("\n");
system("pause");
}while(opmenu!=4);
}

Você também pode gostar