From c3f942b89198c72ebe70428497eab2e79a009513 Mon Sep 17 00:00:00 2001 From: "paul.albuquer" <paul.albuquerque@hesge.ch> Date: Sun, 14 Nov 2021 14:01:03 +0100 Subject: [PATCH] added source codes and handout for queues --- lessons/contenu_cours_struct_pile.md | 2 +- lessons/contenu_cours_struct_queue.md | 114 ++++++++++++++++++ lessons/figures/fig_empty_queue_insert.png | Bin 0 -> 20230 bytes .../figures/fig_non_empty_queue_insert.png | Bin 0 -> 30022 bytes lessons/figures/fig_queue_extract.png | Bin 0 -> 24244 bytes lessons/figures/fig_queue_representation.png | Bin 0 -> 7251 bytes source_codes/queues/queue_array_int.c | 72 +++++++++++ source_codes/queues/queue_array_int.h | 35 ++++++ source_codes/queues/queue_array_int_partiel.c | 66 ++++++++++ source_codes/queues/queue_ptr_int.c | 112 +++++++++++++++++ source_codes/queues/queue_ptr_int.h | 37 ++++++ source_codes/queues/queue_ptr_int_partiel.c | 68 +++++++++++ 12 files changed, 505 insertions(+), 1 deletion(-) create mode 100644 lessons/contenu_cours_struct_queue.md create mode 100644 lessons/figures/fig_empty_queue_insert.png create mode 100644 lessons/figures/fig_non_empty_queue_insert.png create mode 100644 lessons/figures/fig_queue_extract.png create mode 100644 lessons/figures/fig_queue_representation.png create mode 100644 source_codes/queues/queue_array_int.c create mode 100644 source_codes/queues/queue_array_int.h create mode 100644 source_codes/queues/queue_array_int_partiel.c create mode 100644 source_codes/queues/queue_ptr_int.c create mode 100644 source_codes/queues/queue_ptr_int.h create mode 100644 source_codes/queues/queue_ptr_int_partiel.c diff --git a/lessons/contenu_cours_struct_pile.md b/lessons/contenu_cours_struct_pile.md index 95633cf..6400221 100644 --- a/lessons/contenu_cours_struct_pile.md +++ b/lessons/contenu_cours_struct_pile.md @@ -1,6 +1,6 @@ # Algorithmes et structures de données -# Structure de piles +# Structure de pile ***** diff --git a/lessons/contenu_cours_struct_queue.md b/lessons/contenu_cours_struct_queue.md new file mode 100644 index 0000000..6c456fa --- /dev/null +++ b/lessons/contenu_cours_struct_queue.md @@ -0,0 +1,114 @@ +# Algorithmes et structures de données + +# Structure de file d'attente + +***** + +## 1. Définition + +Une file d'attente ou queue est une structure de données dans laquelle la première information entrée est la première à ressortir (en anglais : FIFO, First In First Out) + +On considère ici une implémentation de queue dynamique et donc à capacité « infinie » (dépend en réalité de la mémoire disponible). + +## 2. Spécification de la structure + +Si le type des éléments qu'on insère, n'est pas précisé, on parle de spécification générique. + +Les opérations possibles sur une file d'attente (ou queue) en définissent l'interface : + +* Opérations de manipulation + * Créer une liste vide + * Détruire une liste + * Insérer un nouvel élément en queue de la file d'attente + * Extraire un élément en tête de la file d'attente (i.e. le premier élément introduit) + * +* Fonctions de consultation + * Lire l'élément en tête de la file d'attente + * Lire l'élément en queue de la file d'attente + * Tester si la file d'attente est vide + +L'interface de la file d'attente est l'ensemble des fonctionnalités offertes à l'utilisateur pour interagir +avec celle-ci. + +## 3. Structure de file d'attente + +On considère une liste chaînée d'articles avec deux pointeurs de tête et de queue. Chaque article comportera un champ pour stocker les valeurs dans cette liste et un champ contenant une variable de type accès pour assurer le chaînage. On considère à titre d'exemple le cas de valeurs entières. + +Schématiquement: + + + +L'accès à la file d'attente se fera par les pointeurs de tête et de queue. + +Une telle file d'attente basée sur une liste chaînée sera déclarée par exemple sous la forme suivante: + +```C + struct _element { // Elément de liste + int data; + struct _element* next; + } element; + + struct _queue { // File d'attente: + element* tete; // tête de file d'attente + element* debut; // queue de file d'attente + } +``` + +## 4. Implémentation des fonctionnalité d'une file d'attente + +### a) Consultations + +On considère la fonction queue_est_vide qui teste si la file d'attente est vide et les fonctions `queue_tete` et `queue_debut` qui retournent l'élément en tête, respectivement en queue, de la file d'attente. + +```C + bool queue_est_vide(queue fa) { + return (NULL == fa.tete && NULL == fa.debut); + } + + int queue_tete(queue fa) { + assert(!queue_est_vide(fa)); + return fa.tete>data; + } + + int queue_debut(queue fa) { + assert(!queue_est_vide(fa)); + return fa.debut>data; + } +``` + +### b) Manipulations + +#### Insertion en queue de file d'attente + +Voici l'entête de la fonction: `void queue_inserer(queue* fa,int val);` + +Il faut considérer plusieurs cas: + +* La file d'attente est vide + + + +* L'insertion se fait en queue d'une file d'attente non vide + + + +#### Extraction en tête de file d'attente + +Voici l'entête de la procédure: +`int queue_extraire(queue* fa);` + +On commence par récupérer, la valeur en tête de file d'attente via l'appel `queue_tete(*fa);` + +Puis on met un pointeur temporaire sur l'élément en tête, avant de déplacer le pointeur de tête sur l'élément suivant. +Finalement, on désalloue la mémoire + + + +Si la file d'attente n'avait qu'un seul élément, alors il faudrait mettre le pointeur `fa->debut` à `NULL`. +Dans ce cas, à la suite du point (3), le pointeur `fa->tete` se retrouve à `NULL`. On doit donc ajouter l'instruction : + +```C + if (NULL == fa>tete) { + fa>debut = NULL; + } +``` diff --git a/lessons/figures/fig_empty_queue_insert.png b/lessons/figures/fig_empty_queue_insert.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7aad80007c8a2d0f1a3ae0a3d9561479737a23 GIT binary patch literal 20230 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 Taea7C6XZruS3j3^P6<r_UGYil literal 0 HcmV?d00001 diff --git a/lessons/figures/fig_non_empty_queue_insert.png b/lessons/figures/fig_non_empty_queue_insert.png new file mode 100644 index 0000000000000000000000000000000000000000..8093d290f00bd6f8c320f138374dc28b6a343385 GIT binary patch literal 30022 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ⅇ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 literal 0 HcmV?d00001 diff --git a/lessons/figures/fig_queue_extract.png b/lessons/figures/fig_queue_extract.png new file mode 100644 index 0000000000000000000000000000000000000000..b103ee95bb0cd145678ece54c2ef5cb6b89d337e GIT binary patch literal 24244 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 M>FVdQ&MBb@0M%G7IRF3v literal 0 HcmV?d00001 diff --git a/lessons/figures/fig_queue_representation.png b/lessons/figures/fig_queue_representation.png new file mode 100644 index 0000000000000000000000000000000000000000..262d9a7ee941a10e3d50a19ac87a287d6f42ce71 GIT binary patch literal 7251 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 Kb6Mw<&;$VDzVn&@ literal 0 HcmV?d00001 diff --git a/source_codes/queues/queue_array_int.c b/source_codes/queues/queue_array_int.c new file mode 100644 index 0000000..752ef9c --- /dev/null +++ b/source_codes/queues/queue_array_int.c @@ -0,0 +1,72 @@ +#include <stdlib.h> +#include <stdbool.h> +#include <assert.h> +#include <limits.h> +#include"queue_array_int.h" + +bool queue_est_valide(queue fa) { + return (fa.capacite > 0 && fa.debut >= -1); +} + +bool queue_est_vide(queue fa) { + assert(queue_est_valide(fa)); + return (-1 == fa.debut); +} + +bool queue_est_pleine(queue fa) { + assert(queue_est_valide(fa)); + return (fa.capacite-1 == fa.debut); +} + +int queue_count(queue fa) { + assert(queue_est_valide(fa)); + return fa.debut+1; +} + +int queue_tete(queue fa) { + assert(!queue_est_vide(fa)); + return fa.data[0]; +} + +int queue_debut(queue fa) { + assert(!queue_est_vide(fa)); + return fa.data[fa.debut]; +} + +queue queue_creer() { + queue fa; + fa.capacite = INCR; + fa.debut = -1; + fa.data = malloc(INCR*sizeof(int)); + return fa; +} + +void queue_resize(queue* fa,int max) { + assert(queue_est_valide(*fa)); + if (max > fa->capacite) { + fa->capacite = max; + fa->data = realloc(fa->data,max*sizeof(int)); + } +} + +void queue_detruire(queue* fa) { + fa->capacite = -1; + fa->debut = INT_MIN; + free(fa->data); +} + +void queue_inserer(queue* fa,int val) { + if (queue_est_pleine(*fa)) { + queue_resize(fa,fa->capacite+INCR); + } + fa->debut++; + fa->data[fa->debut] = val; +} + +int queue_extraire(queue* fa) { + int val = queue_tete(*fa); + fa->debut--; + fa->data = memmove(fa->data,fa->data+1,queue_count(*fa)*sizeof(int)); + return val; +} + diff --git a/source_codes/queues/queue_array_int.h b/source_codes/queues/queue_array_int.h new file mode 100644 index 0000000..9c9c53e --- /dev/null +++ b/source_codes/queues/queue_array_int.h @@ -0,0 +1,35 @@ +#ifndef QUEUE_ARRAY_INT_H +#define QUEUE_ARRAY_INT_H + +#include <stdbool.h> +const int INCR = 100; + +typedef struct _queue { + int* data; + int debut; //tete à l'index 0 + int capacite; +} queue; + +//Créer une nouvelle queue vide +queue queue_creer(); +//Libérer le tableau, mettre la capacité à < -1 +void queue_detruire(queue* fa); +//Inserer un élement en début de queue +void queue_inserer(queue* fa,int val); +//Extraire un élément en tête de queue +int queue_extraire(queue* fa); +//Consulter l'élément en tête de queue +int queue_tete(queue fa); +//Consulter l'élément au début de queue +int queue_debut(queue fa); +//Tester si la queue est vide +bool queue_est_vide(queue fa); +//Compter du nombre d'éléments de la queue: +int queue_count(queue fa); + +#endif + + + + + diff --git a/source_codes/queues/queue_array_int_partiel.c b/source_codes/queues/queue_array_int_partiel.c new file mode 100644 index 0000000..e964c98 --- /dev/null +++ b/source_codes/queues/queue_array_int_partiel.c @@ -0,0 +1,66 @@ +#include <stdlib.h> +#include <stdbool.h> +#include <assert.h> +#include"queue_array_int.h" + +bool queue_est_valide(queue fa) { + return (fa.capacite > 0 && fa.debut >= -1); +} + +bool queue_est_vide(queue fa) { + assert(queue_est_valide(fa)); + return (-1 == fa.debut); +} + +bool queue_est_pleine(queue fa) { + // à compléter +} + +int queue_count(queue fa) { + // à compléter +} + +int queue_tete(queue fa) { + assert(!queue_est_vide(fa)); + return fa.data[0]; +} + +int queue_debut(queue fa) { + assert(!queue_est_vide(fa)); + return fa.data[fa.debut]; +} + +queue queue_creer() { + queue fa; + fa.capacite = INCR; + fa.debut = -1; + fa.data = malloc(INCR*sizeof(int)); + return fa; +} + +void queue_resize(queue* fa,int max) { + assert(queue_est_valide(*fa)); + if (max > fa->capacite) { + fa->capacite = max; + fa->data = realloc(fa->data,max*sizeof(int)); + } +} + +void queue_detruire(queue* fa) { + // à compléter +} + +void queue_inserer(queue* fa,int val) { + if (queue_est_pleine(*fa)) { + queue_resize(fa,fa->capacite+INCR); + } + fa->debut++; + fa->data[fa->debut] = val; +} + +int queue_extraire(queue* fa) { + int val = queue_tete(*fa); + // à compléter + return val; +} + diff --git a/source_codes/queues/queue_ptr_int.c b/source_codes/queues/queue_ptr_int.c new file mode 100644 index 0000000..4da1908 --- /dev/null +++ b/source_codes/queues/queue_ptr_int.c @@ -0,0 +1,112 @@ +#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; +}*/ + + + diff --git a/source_codes/queues/queue_ptr_int.h b/source_codes/queues/queue_ptr_int.h new file mode 100644 index 0000000..4dd3a6c --- /dev/null +++ b/source_codes/queues/queue_ptr_int.h @@ -0,0 +1,37 @@ +/* pour éviter que le précompilateur inclue plusieurs fois le fichier .h */ +#ifndef QUEUE_PTR_INT_H +#define QUEUE_PTR_INT_H +#include <stdbool.h> + +/* Utilité du typedef : Element a; <=> struct Element a; */ +typedef struct _element { + int data; + struct _element* next; +} element; + +typedef struct _queue { + element* tete; + element* debut; +} queue; + +//Créer d'une nouvelle queue vide +queue queue_creer(); +//Désallouer complètement la queue +void queue_detruire(queue* fa); +//Insérer un élement en début de queue +void queue_inserer(queue* fa,int val); +//Extraire un élément de la queue +int queue_extraire(queue* fa); +//Consulter l'élément en tête de queue +int queue_tete(queue fa); +//Consulter l'élément en début de queue +int queue_debut(queue fa); +//Tester si la queue est vide +bool queue_est_vide(queue fa); +//Compter le nombre d'éléments de la queue: +int queue_count(queue fa); +#endif + + + + diff --git a/source_codes/queues/queue_ptr_int_partiel.c b/source_codes/queues/queue_ptr_int_partiel.c new file mode 100644 index 0000000..41f2916 --- /dev/null +++ b/source_codes/queues/queue_ptr_int_partiel.c @@ -0,0 +1,68 @@ +#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) { + // à compléter +} + +//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; + // à compléter + return cnt; +} + + -- GitLab