Buscar

filaCircular em c

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

/*
 * Vandcarlos Mouzinho Sandes Junior
 * vandcarlosjunior@gmail.com
 * +55 12 99611-4871
 */
#include <stdio.h>
void inserir(int valor, int *fim, int fila[], int *totalElementos);
void remover(int *inicio, int fila[], int *totalElementos);
void consulta(int fila[], int inicio, int totalElementos);
/*
 * Meninas diferente da pilha estática eu fiz passagens por referência, pois difente de lá que apenas o fim era
 * alterado na função main no caso dessa fila que eu implementei, duas variáveis são alteradas além do vetor com as chaves
 * no caso de inserir temos a fim e o totalElementos e no caso de remover temos inicio e totalElementos
 * como podem perceber na função consultar eu passei apenas os parâmetros (valores) pois eles não podem mudar na main
 * servem apenas como um controle para percorrer toda a lista
 */
int main()
{
 int fila[10], inicio, fim, totalElementos;
 inicio = 0;
 fim = 0;
 totalElementos = 0;
}
void inserir(int valor, int *fim, int fila[], int *totalElementos)
{
 if(*totalElementos == 10)
 {
 printf("A fila ja esta cheia, impossivel adicionar novo elemento! \n");
 }
 else
 {
 fila[*fim] = valor;
 *fim = *fim + 1;
 if(*fim == 10)
 {
 *fim = 0;//caso tenha chegado no final da lista volta para o começo
 }
 *totalElementos = *totalElementos +1;
 }
 return;
}
void remover(int *inicio, int fila[], int *totalElementos)
{
 if(*totalElementos == 0)
 {
 printf("A fila ja esta vazia, impossivel remover!! \n");
 }
 else
 {
 *totalElementos = *totalElementos - 1;
 *inicio = *inicio + 1;
 if(*inicio == 10)
 {
 *inicio = 0;//caso tenha chegado no final da fila volta para o começo
 }
 }
 return;
}
void consulta(int fila[], int inicio, int totalElementos)
{
 /*
 * Escolhi fazer o controle da consulta através da variavél totalElementos pois só assim posso saber
 * se a fila está vazia ou cheia, pois usando inicio e fim, em ambas as situações, vazia e cheia, elas teriam
 * o mesmo valor
 */
 while(totalElementos != 0)
 {
 printf("%d ", fila[inicio]);
 inicio = inicio + 1;
 if(inicio == 10)
 {
 inicio = 0;
 }
 totalElementos = totalElementos -1;
 }
 printf("\n");
 return;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando