Created
March 9, 2023 19:59
-
-
Save folivetti/d8bcfa21498870061b26aa22f57b491a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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