@giu_d Segue o código inteiro
#include<stdio.h>
#include<stdlib.h>
#define MAX 5
struct circular
{ int com;
int fim;
int total;
int memo[MAX];
};
typedef struct circular circular;
void enfileirar(struct circular *F, int x);
int desenfileirar(struct circular *F);
void listar(struct circular A);
int busca(struct circular B, int x);
int main ()
{
struct circular F;
F.com = 0;
F.total = 0;
F.fim = -1;
int opc,x,pos,num;
do
{
opc = menu();
switch(opc)
{
case 1:
if(F.fim==MAX-1)
{
printf("Fila cheia ");
}
else
{
printf("Digite o numero que deseja inserir ");
scanf("%d", &x);
if(busca(F,x) == 1)
{
printf("Nao eh possivel inserir numeros repetidos ");
}
else
{
enfileirar(&F, x);
}
}
break;
case 2:
if(F.total == 0)
printf("Fila vazia ");
else
printf("Valor retirado = %d", desenfileirar(&F));
break;
case 3:
if(F.fim == -1)
printf("\n Fila vazia ");
else
listar(F);
break;
case 4:
printf("Digite o numero que deseja buscar ");
scanf("%d", &x);
if((busca(F,x)==1))
printf("Achou oba!");
else
printf("Numero nao encontrado :/");
case 5:
printf("Saindo ");
break;
default: printf("Posicao invalida ");
}
}while(opc!=5);
}
void enfileirar(struct circular *F, int x)
{
F->fim++;
if(F->fim == MAX)
F->fim = 0;
F->memo[F->fim] = x;
F->total++;
}
int desenfileirar(struct circular *F)
{
int aux;
aux = F->memo[F->com];
F->com++;
if(F->com == MAX)
{
F->com = 0;
}
F->total --;
return aux;
}
void listar(struct circular A)
{
while(A.total!=0)
{
printf("%d", desenfileirar(&A));
}
}
}
int busca(struct circular B, int x)
{ int achou;
while(B.total!=0)
{
if(x == desenfileirar(&B))
{
achou = 1;
}
}
return achou;
}
int menu()
{
int opc;
printf("\n 1- Enfileirar ");
printf("\n 2- Desenfileirar ");
printf("\n 3- Listar ");
printf("\n 7 - Busca");
printf("\n 8 - Sair");
printf("\n OPC = ");
scanf("%d", &opc);
return opc;
}