Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define N 10
- typedef struct
- {
- int *vetor;//ponteiro para o vetor
- int tamVetor;//tamanho do vetor
- int inicio;
- int fim;
- }Fila;
- Fila *fila_cria()
- {
- Fila *f=(Fila*)malloc(sizeof(Fila));
- f->inicio=0;
- f->fim=0;
- f->tamVetor=N;
- f->vetor=(int*)malloc(sizeof(int)*N);
- return f;
- }
- int fila_vazia(Fila *f)
- {
- if(f->inicio==f->fim)
- return 1;
- return 0;
- }
- void compacta(Fila *f)
- {
- int tamFila=f->fim - f->inicio;
- int i;
- for(i=0;i<tamFila;i++)
- f->vetor[i]=f->vetor[i+f->inicio];
- f->inicio=0;
- f->fim=tamFila;
- }
- //compactaƧao inteligente
- void fila_insere(Fila *f, int n)
- {
- if(f->fim==f->tamVetor)
- {
- //falso fila cheia
- int tamFila=f->fim - f->inicio;
- if(tamFila < f->tamVetor)
- compacta(f);
- else
- {
- printf("Fila Cheia!!\n");
- return;
- }
- }
- f->vetor[f->fim]=n;
- f->fim++;
- }
- int fila_retira(Fila *f)
- {
- int v;
- v=f->vetor[f->inicio];
- f->inicio++;
- return v;
- }
- void fila_libera(Fila *f)
- {
- free(f->vetor);
- free(f);
- }
- void mostra_fila(Fila *f)
- {
- int i;
- if(fila_vazia(f))
- printf("Fila vazia!\n");
- else
- {
- for(i=f->inicio; i< f->fim;i++)
- printf("%d\t", f->vetor[i]);
- printf("\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment