Skip to content
Snippets Groups Projects
Commit 73e5812a authored by pierre.kunzli's avatar pierre.kunzli Committed by orestis.malaspin
Browse files

Pk

parent ccaaaa8c
No related branches found
No related tags found
No related merge requests found
...@@ -411,15 +411,17 @@ booléen est_dans_page(page, valeur) // la valeur est dans la page ...@@ -411,15 +411,17 @@ booléen est_dans_page(page, valeur) // la valeur est dans la page
```C ```C
booléen est_feuille(page) booléen est_feuille(page)
retourne (page.tab[0] == vide) retourne (page.tab[0].pg == vide)
entier position(page, valeur) entier position(page, valeur)
i = 0 i = 0
tant que i < page.nb && val >= page.tab[i] tant que i < page.nb && val >= page.tab[i+1].clef
i += 1 i += 1
retourne i retourne i
booléen est_dans_page(page, valeur) booléen est_dans_page(page, valeur)
i = position(page, valeur) i = position(page, valeur)
retourne (i > 0 && page.tab[i] == valeur) retourne (page.nb > 0 && page.tab[i].val == valeur)
``` ```
# Les B-arbres # Les B-arbres
...@@ -441,6 +443,7 @@ page nouvelle_page(ordre) ...@@ -441,6 +443,7 @@ page nouvelle_page(ordre)
page.nb = 0 page.nb = 0
page.tab = allouer(2*ordre+2) page.tab = allouer(2*ordre+2)
retourner page retourner page
rien liberer_memoire(page) rien liberer_memoire(page)
si est_feuille(page) si est_feuille(page)
liberer(page.tab) liberer(page.tab)
...@@ -467,7 +470,7 @@ page recherche(page, valeur) // retourner la page contenant ...@@ -467,7 +470,7 @@ page recherche(page, valeur) // retourner la page contenant
page recherche(page, valeur) page recherche(page, valeur)
si est_dans_page(page, valeur) si est_dans_page(page, valeur)
retourne page retourne page
sinon si est_feuille(page) && !est_dans_page(page, valeur) sinon si est_feuille(page)
retourne vide retourne vide
sinon sinon
recherche(page.tab[position(page, valeur)], valeur) recherche(page.tab[position(page, valeur)], valeur)
...@@ -478,17 +481,19 @@ page recherche(page, valeur) ...@@ -478,17 +481,19 @@ page recherche(page, valeur)
## Les fonctions ## Les fonctions
```C ```C
page inserer(page, valeur) // inserer une valeur page inserer_valeur(page, valeur) // inserer une valeur
``` ```
. . . . . .
```C ```C
page inserer(page, valeur) page inserer_valeur(page, valeur)
element = nouvel_element(valeur) element = nouvel_element(valeur)
inserer_element(page, element) // on change elmement pour savoir s'il faut le remonter // on change element pour savoir s'il faut le remonter
si element.page != vide inserer_element(page, element)
page = ajouter_niveau(page, element) // si on atteint le sommet! si element.page != vide && page.nb > 2*page.ordre
// si on atteint le sommet!
page = ajouter_niveau(page, element)
retourne page retourne page
``` ```
...@@ -509,6 +514,7 @@ rien inserer_element(page, element) ...@@ -509,6 +514,7 @@ rien inserer_element(page, element)
sinon sinon
sous_page = page.tab[position(page, element)].page sous_page = page.tab[position(page, element)].page
inserer_element(sous_page, element) inserer_element(sous_page, element)
// un element a été promu
si element.page != vide si element.page != vide
placer(page, element) placer(page, element)
``` ```
...@@ -525,10 +531,10 @@ rien placer(page, element) // inserer un élément ...@@ -525,10 +531,10 @@ rien placer(page, element) // inserer un élément
```C ```C
rien placer(page, element) rien placer(page, element)
i = position(page, element.clé) pos = position(page, element.clé)
pour i de 2*page.ordre à i+1 pour i de 2*page.ordre à pos+1
page.tab[i+1] = page.tab[i] page.tab[i+1] = page.tab[i]
page.tab[i+1] = element page.tab[pos+1] = element
page.nb += 1 page.nb += 1
si page.nb > 2*page.ordre si page.nb > 2*page.ordre
scinder(page, element) scinder(page, element)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment