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