Problema Fila Em Linguagem C?
Alguem sabe um codigo para fazer uma fila (FiFO) em Linguagem C. E que estou tentando só que está dando erro na hora de tirar da fila. Não está tirando o primeiro número. Ai esta o codigo:
int tirardafila(int *fila , int finaldafila,int tam)
{
int i;
for(i=0;i<n;i++){
if(finaldafila==tam-1){
fila[i]=fila[i+1];
finaldafila--;
printf("\tRemovido:%d\n\n",fila[finaldafila]);
}else{
printf("\tA fila esta vazia\n\n\7");
for(i=0;i<n;i++){
printf("%d ",fila[i]);
}
break;
}
}
return finaldafila;
}
Update:printf("\tRemovido:%d\n\n",aux);
if(inicio!=0){
for(i=0;i<n;i++){
printf("%d ",fila[i]);
}
printf("\n\n");
}else{
printf("\tA pilha esta vazia\n\n\7");
for(i=0;i<n;i++){
printf("%d ",fila[i]);
}
printf("\n\n\n");
}
return inicio;
}
void main()
{
int *fila,n,num,inicio=0,op;
printf("\tInforme o tamanho:\n");
scanf("%d",&n);
fila = malloc(n*sizeof(int));
do{
printf("\t<-------FILA------->\n");
printf("\t1-Enfileirar\n");
printf("\t2-Tirar da Fila\n");
printf(&quo
Comments
Não consegui entender qual foi o raciocínio que você seguiu. De qualquer forma está errado.
Creio que você queira retornar o primeiro elemento da fila.
Seu teste de fila vazia está errado (você considera erroneamente que se a fila não estiver cheia então está vazia) e, caso esteja cheia, destrói o primeiro elemento da fila.
Estude:
http://www.ime.usp.br/~pf/algoritmos/aulas/fila.ht...