quinta-feira, 27 de agosto de 2015

Fila Circular




#include <stdio.h>
#include <stdlib.h>

#define TAMANHO 5

int fila[TAMANHO];
int opcao;
int numero;
int fim;
int inicio;
int vazia = 0;

void menu();
void adicionar(int numero);
int retirar();

int main()
{
    opcao = 0;
    inicio = 0;
    fim = 0;
    while(opcao != 3)
    {
        menu();
        switch(opcao)
        {
        case 1:
            printf("Digite o numero: ");
            scanf("%d",&numero);
            adicionar(numero);
            break;
        case 2:
            if(vazia==0){
                    printf("\n***FILA VAZIA***\n");
            }else{
            numero = retirar();
            printf("\nRetirado o numero %d da fila\n", numero);
            }
            break;
        case 3:
            break;
        default:
            printf("\nOpcao invalida!\n");
        }
        printf("\n\n");
    }
}

void menu()
{
    printf("1 - adicionar\n");
    printf("2 - retirar\n");
    printf("3 - sair\n");
    printf("Digite a opcao: ");
    scanf("%d", &opcao);
}

void adicionar(int numero)
{
if(vazia==0){
    fila[fim] = numero;
    fim++;
    printf("\n");
    if(fim==TAMANHO){
        fim =0;
    }
        vazia = 1;
    }else if(inicio==fim){
        printf("\n***FILA CHEIA***\n");
    }else{
    fila[fim]= numero;
    fim++;
    }
    if(fim==TAMANHO){
        fim=0;
    }
}


int retirar()
{
int valorParaRetorno=-1;
    if(vazia==0){
        printf("\n\n***Fila Vazia***\n\n");
    } else{
        valorParaRetorno = fila[inicio];
        inicio++;
        if(inicio==TAMANHO){
            inicio=0;
        }
        if(inicio==fim){
            vazia = 0;
        }
        return valorParaRetorno;
    }
 }

Nenhum comentário:

Postar um comentário