From 4b5e122057c0d10679c999b03072ad300e0b6b76 Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Fri, 17 Dec 2021 00:34:10 +0100 Subject: [PATCH] added the exercises --- slides/cours_11.md | 58 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/slides/cours_11.md b/slides/cours_11.md index 37ce2eb..b3775b9 100644 --- a/slides/cours_11.md +++ b/slides/cours_11.md @@ -728,20 +728,70 @@ Pas possible. # Liste doublement chaînée -## Exercice +## Exercices * Partir du dessin suivant et par **groupe de 5**  -. . . +1. Écrire les structures de données pour représenter la liste doublement + chaînée dont le type sera `dll` (pour + `doubly_linked_list`) + +# Liste doublement chaînée -1. Écrire les structures de données pour représenter la liste double chaînée. -2. Écrire les fonctionnalités suivantes +2. Écrire les fonctionnalités de création et consultation ```C +// crée la liste doublement chaînée +dll dll_create(); +// retourne la valeur à la position actuelle dans la liste +int dll_value(dll list); +// la liste est-elle vide? +bool dll_is_empty(dll list); +// Est-ce que pos est le 1er élément? +bool dll_is_head(dll list); +// Est-ce que pos est le dernier élément? +bool dll_is_tail(dll list); +// data est-elle dans la liste? +bool dll_is_present(dll list, int data); +// affiche la liste +void dll_print(dll list); +``` +# Liste doublement chaînée + +3. Écrire les fonctionnalités de manipulation + +```C +// déplace pos au début de la liste +list dll_move_to_head(dll list); +// déplace pos à la position suivante dans la liste +dll dll_next(dll list); +// déplace pos à la position précédente dans la liste +dll dll_prev(dll list); ``` +# Liste doublement chaînée + +4. Écrire les fonctionnalités d'insertion + +```C +// insertion de data dans l'élément *après* pos +dll dll_insert_after(dll list, int data); +// insertion de data en tête de liste +dll dll_push(dll list, int data); +``` + +5. Écrire les fonctionnalités d'extraction +```C +// extraction de la valeur se trouvant dans l'élément *pos* +// l'élément *pos* est libéré +int dll_extract(dll *list); +// extrait la donnée en tête de liste +int dll_pop(dll *list); +// vide la liste +void dll_destroy(dll *list) +``` -- GitLab