Skip to content
Snippets Groups Projects
Select Git revision
  • c3f942b89198c72ebe70428497eab2e79a009513
  • main default protected
2 results

queue_ptr_int.c

Blame
  • 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;   
    }*/