/* * Fila_ligada_simples: implementação ligada ineficiente. */ #include "fila_ligada_simples.h" #include #include /* Inicia uma instância do tipo fila */ void cria_fila(Fila* ap_fila) { *ap_fila = NULL; } /* Verifica se a fila está vazia */ int fila_vazia(Fila* ap_fila) { return *ap_fila == NULL; } /* Insere um elemento na fila */ void insere_fila(Fila* ap_fila, int v) { No_fila* p = (No_fila*) malloc (sizeof (No_fila)); p->v = v; p->prox = NULL; if (*ap_fila == NULL) *ap_fila = p; else { No_fila* q = *ap_fila; while (q->prox != NULL) q = q->prox; q->prox = p; } } /* Remove um elemento da fila */ int remove_fila(Fila* ap_fila) { if (*ap_fila == NULL) { printf ("Erro: Fila vazia!\n"); exit(1); } else { No_fila* p = *ap_fila; int v = p->v; *ap_fila = (*ap_fila)->prox; free(p); return v; } } /* Descarta todos os elementos da fila */ void libera_fila(Fila* ap_fila) { No_fila* p = *ap_fila; while (p != NULL) { No_fila* q = p; p = p->prox; free(q); } }