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
No related branches found
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
```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