Fila Com Compactação Inteligente
Casos: Fila Com Compactação Inteligente. Pesquise 862.000+ trabalhos acadêmicosPor: kello • 18/3/2014 • 767 Palavras (4 Páginas) • 237 Visualizações
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int *vetFila;
int inicio; /* indexa o início da Fila */
int fim; /*indexa o final da Fila */
int tamVetor; /* numero de elementos do vetor*/
int tamFila; /* testes de vazia/cheia */
} Fila;
void enfilera(Fila *fi, int novo)
{ //queue
if (fi->tamFila == fi->tamVetor) {//nao há espaço
printf("Fila cheia\n");
return;
}
if (fi->fim==fi->tamVetor) //usa o aspecto circular
fi->fim=0;
fi->vetFila[fi->fim]=novo;
fi->fim++;
fi->tamFila++;
}
int retira(Fila *fi){//sempre do inicio
int n;
n=fi->vetFila[fi->inicio];
//se é o ultimo elemento do vetor
if(fi->inicio==fi->tamVetor-1)
fi->inicio=0;
else
(fi->inicio)++;
(fi->tamFila)--;
return n;
}
int fila_vazia(Fila *f){
return (f->tamFila==0);
}
Fila *cria_fila(int t)
{
Fila *f=(Fila*)malloc(sizeof(Fila));
f->inicio=0;
f->fim=0;
f->tamVetor=t;
f->tamFila=0;
f->vetFila=(int*)malloc(t*sizeof(int));
return f;
}
void mostrafila(Fila *f){
if (f->inicio < f->fim){//nao circulou
for (int i=f->inicio;i< f->fim;i++)
printf ("%d\t",f->vetFila[i]);
printf("\n");
}
else {//circulou
for(int i = f->inicio;i<f->tamVetor;i++)
printf ("%d\t",f->vetFila[i]);
for(int i=0;i< f->fim;i++)
printf ("%d\t",f->vetFila[i]);
...