Skip to content

Instantly share code, notes, and snippets.

@folivetti
Created March 9, 2023 19:59
Show Gist options
  • Save folivetti/d8bcfa21498870061b26aa22f57b491a to your computer and use it in GitHub Desktop.
Save folivetti/d8bcfa21498870061b26aa22f57b491a to your computer and use it in GitHub Desktop.
#include <stdlib.h>
#include "lista.h"
#include "fila.h"
FilaDinamica *criar_fila() {
FilaDinamica *fila = malloc(sizeof(FilaDinamica));
fila->inicio = NULL;
fila->fim = NULL;
return fila;
}
int enfileirar(FilaDinamica *fila, int valor) {
LinkedNode *novo_item = malloc(sizeof(LinkedNode));
if (novo_item == NULL) return 0;
novo_item->data = valor;
novo_item->next = NULL;
if (fila->fim != NULL)
fila->fim->next = novo_item;
fila->fim = novo_item;
if (fila->inicio == NULL)
fila->inicio = novo_item;
return 1;
}
int desenfileirar(FilaDinamica *fila, int *valor) {
// Fila vazia?
if (fila->inicio == NULL) return 0;
LinkedNode *no = fila->inicio;
*valor = no->data;
fila->inicio = fila->inicio->next;
if (fila->inicio == NULL)
fila->fim = NULL;
free(no);
return 1;
}
void liberar_lista_fila(LinkedNode *no) {
if (no == NULL) return;
liberar_lista_fila(no->next);
free(no);
}
void liberar_fila(FilaDinamica *fila) {
liberar_lista_fila(fila->inicio);
free(fila);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment