Skip to content
Snippets Groups Projects
Commit 246a6073 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

Merge branch 'pk' into 'master'

Pk

See merge request !11
parents ccaaaa8c 73e5812a
Branches
No related tags found
1 merge request!11Pk
Pipeline #18765 passed
...@@ -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