diff --git a/slides/cours_22.md b/slides/cours_22.md index 7ed396dde9046f085452921dd4e9afa895fd1c4d..06fb1a27a2a36440324d2da3cfce6035f63f2f2f 100644 --- a/slides/cours_22.md +++ b/slides/cours_22.md @@ -15,12 +15,6 @@ patat: backend: auto --- -# Le cours précédent - -* Questions: - - - # Les B-arbres ## Problématique @@ -391,7 +385,7 @@ P_0 | K_1 | P_1 | K_2 | | P_i | K_{i+1} | | P_{m-1} | K_m | P_m ```C struct page - int ordre, nb + entier ordre, nb element tab[2*ordre + 2] ``` @@ -403,6 +397,57 @@ struct element # Les B-arbres +## Les fonctions utilitaires (5min matrix) + +```C +booléen est_feuille(page) // la page est elle une feuille? +entier position(page, valeur) // à quelle indice on insère? +``` + +. . . + +```C +booléen est_feuille(page) + retourne (page.tab[0] == vide) +entier position(page, valeur) + i = 0 + tant que i < page.nb && val >= page.tab[i] + i += 1 + retourne i +``` + +# Les B-arbres + +\footnotesize + +## Les fonctions utilitaires (5min matrix) + +```C +page nouvelle_page(ordre) // creer une page +rien liberer_memoire(page) // liberer tout un arbre! +``` +. . . + +```C +page nouvelle_page(ordre) + page = allouer(page) + page.ordre = ordre + page.nb = 0 + page.tab = allouer(2*ordre+2) + retourner page +rien liberer_memoire(page) + si est_feuille(page) + liberer(page.tab) + liberer(page) + sinon + pour fille dans page.tab + liberer_memoire(fille) + liberer(page.tab) + liberer(page) +``` + +# Les B-arbres + <!-- # Les B-arbres -->