#include <stdio.h>
#include <stdlib.h>
int inserir(int *fila, int elemento, int tam, int *ini,int *fim)
{
if(*ini==*fim && *fim==-1)
{
fila[++*fim]=elemento;
*ini=0;
return 1;
}
if(*fim==(tam-1) && *ini==0)
{
printf("\nFila cheia!\n");
return 0;
}
if(*fim==(tam-1))
{
int i;
*fim=-1;
for(int k=*ini;k<tam;k++)
{
fila[i++]=fila[k];
fila[k]=NULL;
*fim=*fim+1;
}
*ini=0;
}
fila[++*fim]=elemento;
return 1;
}
int retirar(int *fila, int tam, int *ini,int *fim)
{
if(*fim==*ini && *fim==-1)
{
printf("\nFila ja vazia!\n");
return 0;
}
if(*fim==*ini)
{
fila[*ini]=NULL;
*ini=-1;
*fim=-1;
return 1;
}
fila[*ini]=NULL;
*ini=*ini+1;
return 1;
}
int main() {
char op;
int ok, tam, *fila, elemento,ini=-1,fim=-1,i;
printf("Informe o tamanho desejado para a fila: ");
scanf("%d",&tam);
if((fila=(int*)malloc(tam*sizeof(int)))==NULL) exit(1);
do{
printf("\n(i)nserir (r)etirar (s)air: ");
getchar();
scanf("%c",&op);
switch (op){
case 'i':
printf("\nInforme o elemento a ser inserido: ");
scanf("%d",&elemento);
ok=inserir(fila,elemento,tam,&ini,&fim);
if(ok)printf("\nElemento inserido com sucesso!\n");
else printf("\nNao foi possivel inserir o novo elemento\n");
break;
case 'r':
ok=retirar(fila,tam,&ini,&fim);
if(ok)printf("\nElemento retirado com sucesso!\n");
else printf("\nNao foi possivel retirar o elemento\n");
break;
}
for(i=0;i<tam;i++) printf("%d\t",fila[i]);
printf("\n");
}while(op!='s');
return 0;
}
Nenhum comentário:
Postar um comentário