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

Pk

parent 8e4ca0ea
No related branches found
No related tags found
No related merge requests found
...@@ -127,15 +127,17 @@ booléen est_dans_page(page, valeur) // la valeur est dans la page ...@@ -127,15 +127,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].clef == valeur)
``` ```
# Les B-arbres # Les B-arbres
...@@ -157,6 +159,7 @@ page nouvelle_page(ordre) ...@@ -157,6 +159,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)
...@@ -183,7 +186,7 @@ page recherche(page, valeur) // retourner la page contenant ...@@ -183,7 +186,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)
...@@ -202,9 +205,11 @@ page inserer(page, valeur) // inserer une valeur ...@@ -202,9 +205,11 @@ page inserer(page, valeur) // inserer une valeur
```C ```C
page inserer(page, valeur) page inserer(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 != vide && element.page != vide
// si on atteint le sommet
page = ajouter_niveau(page, element)
retourne page retourne page
``` ```
...@@ -213,7 +218,8 @@ page inserer(page, valeur) ...@@ -213,7 +218,8 @@ page inserer(page, valeur)
## Les fonctions ## Les fonctions
```C ```C
rien inserer_element(page, element) // inserer un element et voir s'il remonte // inserer un element et voir s'il remonte
rien inserer_element(page, element)
``` ```
. . . . . .
...@@ -225,7 +231,7 @@ rien inserer_element(page, element) ...@@ -225,7 +231,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)
si element.page != vide si element != vide && element.page != vide
placer(page, element) placer(page, element)
``` ```
...@@ -241,13 +247,15 @@ rien placer(page, element) // inserer un élément ...@@ -241,13 +247,15 @@ rien placer(page, element) // inserer un élément
```C ```C
rien placer(page, element) rien placer(page, element)
i = position(page, element.clé) i = position(page, element.clef)
pour i de 2*page.ordre à i+1 pour i de 2*page.ordre à i+1
page.tab[i+1] = page.tab[i] page.tab[i+1] = page.tab[i]
page.tab[i+1] = element page.tab[i+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)
sinon
element = vide
``` ```
# Les B-arbres # Les B-arbres
...@@ -266,7 +274,7 @@ rien scinder(page, element) ...@@ -266,7 +274,7 @@ rien scinder(page, element)
new_page.nb = page.ordre new_page.nb = page.ordre
pour i de 0 à ordre inclu pour i de 0 à ordre inclu
new_page.tab[i] = page.tab[i+ordre+1] new_page.tab[i] = page.tab[i+ordre+1]
element.clé = page.tab[ordre+1].clé element.clef = page.tab[ordre+1].clé
element.page = new_page element.page = new_page
``` ```
...@@ -285,7 +293,7 @@ page ajouter_niveau(page, element) // si on remonte à la racine... ...@@ -285,7 +293,7 @@ page ajouter_niveau(page, element) // si on remonte à la racine...
page ajouter_niveau(page, element) page ajouter_niveau(page, element)
tmp = nouvelle_page(page.ordre) tmp = nouvelle_page(page.ordre)
tmp.tab[0].page = page tmp.tab[0].page = page
tmp.tab[1].clé = element.clé tmp.tab[1].clef = element.clef
tmp.tab[1].page = element.page tmp.tab[1].page = element.page
retourne tmp retourne tmp
``` ```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment