Advertisement
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 tamFila;//tamanho da fila
- int inicio;
- int fim;
- }Fila;
- Fila *fila_cria()
- {
- Fila *f=(Fila*)malloc(sizeof(Fila));
- f->inicio=0;
- f->fim=0;
- f->tamFila=0;
- f->tamVetor=N;
- f->vetor=(int*)malloc(sizeof(int)*N);
- return f;
- }
- int fila_vazia(Fila *f)
- {
- if(f->tamFila==0)
- return 1;
- return 0;
- }
- //fila circular
- void fila_insere(Fila *f, int n)
- {
- if(f->tamFila < f->tamVetor)
- { //há espaco
- if(f->fim==f->tamVetor)
- f->fim=0;//usa aspecto circular
- f->vetor[f->fim]=n;
- f->fim++;
- f->tamFila++;
- }
- else
- printf("\nFila Cheia!!");
- }
- int fila_retira(Fila *f)
- {
- int n;
- n=f->vetor[f->inicio];
- if(f->inicio==f->tamVetor-1)// era o ultimo
- f->inicio=0;
- else
- f->inicio++;
- f->tamFila--;
- return n;
- }
- 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
- {
- if(f->inicio < f->fim)
- {
- //nao circulou
- for(i=f->inicio; i< f->fim;i++)
- printf("%d\t", f->vetor[i]);
- }
- else
- {
- //circulou
- for(i=f->inicio; i<f->tamVetor;i++)
- printf("%d\t", f->vetor[i]);
- for(i=0;i<f->fim;i++)
- printf("%d\t", f->vetor[i]);
- }
- }
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement