Select Git revision
Forked from
LSDS / Teaching / Master / Cloud / chatbot-lab
Source project has a limited visibility.
queue_ptr_int.c 2.21 KiB
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <assert.h>
#include "queue_ptr_int.h"
//Creer une nouvelle queue vide
queue queue_creer() {
queue fa;
fa.tete = fa.debut = NULL;
return fa;
}
//Inserer un élement en début de queue
void queue_inserer(queue* fa,int val) {
element* elmt = malloc(sizeof(element));
elmt->data = val;
elmt->next = NULL;
if (queue_est_vide(*fa)) {
fa->tete = elmt;
} else {
fa->debut->next = elmt;
}
fa->debut = elmt;
}
//Extraire un élément en tête de queue
int queue_extraire(queue* fa) {
int val = queue_tete(*fa);
element* elmt = fa->tete;
fa->tete = fa->tete->next;
free(elmt);
if (NULL == fa->tete) {
fa->debut = NULL;
}
return val;
}
//Désallouer complètement la queue
void queue_detruire(queue* fa) {
while (!queue_est_vide(*fa)) {
int val = queue_extraire(fa);
}
}
//Tester si la queue est vide
bool queue_est_vide(queue fa) {
return (NULL == fa.tete && NULL == fa.debut);
}
//Consulter l'élément en tête de queue
int queue_tete(queue fa) {
assert(!queue_est_vide(fa));
return fa.tete->data;
}
//Consulter l'élément en début de queue
int queue_debut(queue fa) {
assert(!queue_est_vide(fa));
return fa.debut->data;
}
//Compter le nombre d'éléments de la queue:
int queue_count(queue fa) {
int cnt = 0;
while (NULL != fa.tete->next) {
fa.tete = fa.tete->next;
cnt++;
}
return cnt;
}
/////////////////////////////////////////////////////////
/*
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include "fa.h"
void print(void* a) {
int* b = (int*)a;
printf("%d ",*b);
}
int cmp(void* a,void* b) {
int* aa = (int*)a;
int* bb = (int*)b;
if (*aa == *bb) return 0;
else if (*aa < *bb) return -1;
else return 1;
}
int main() {
fa_Elmt* queue = fa_create();
int a = 3;
queue = fa_push(queue,&a);
int b = 6;
queue = fa_push(queue,&b);
int c = 7;
queue = fa_push(queue,&c);
fa_process(queue,print); printf("\n");
int d = 6;
fa_Elmt* elmt = fa_pop(queue,&d,cmp);
int* tutu = (int*)(elmt->data);
printf("%d\n",*tutu);
fa_process(queue,print); printf("\n");
return 0;
}*/