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
Branches
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
```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].clef == valeur)
```
# Les B-arbres
......@@ -157,6 +159,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)
......@@ -183,7 +186,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)
......@@ -202,9 +205,11 @@ page inserer(page, valeur) // inserer une valeur
```C
page inserer(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 != vide && element.page != vide
// si on atteint le sommet
page = ajouter_niveau(page, element)
retourne page
```
......@@ -213,7 +218,8 @@ page inserer(page, valeur)
## Les fonctions
```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)
sinon
sous_page = page.tab[position(page, element)].page
inserer_element(sous_page, element)
si element.page != vide
si element != vide && element.page != vide
placer(page, element)
```
......@@ -241,13 +247,15 @@ rien placer(page, element) // inserer un élément
```C
rien placer(page, element)
i = position(page, element.clé)
i = position(page, element.clef)
pour i de 2*page.ordre à i+1
page.tab[i+1] = page.tab[i]
page.tab[i+1] = element
page.nb += 1
si page.nb > 2*page.ordre
scinder(page, element)
sinon
element = vide
```
# Les B-arbres
......@@ -266,7 +274,7 @@ rien scinder(page, element)
new_page.nb = page.ordre
pour i de 0 à ordre inclu
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
```
......@@ -285,7 +293,7 @@ page ajouter_niveau(page, element) // si on remonte à la racine...
page ajouter_niveau(page, element)
tmp = nouvelle_page(page.ordre)
tmp.tab[0].page = page
tmp.tab[1].clé = element.clé
tmp.tab[1].clef = element.clef
tmp.tab[1].page = element.page
retourne tmp
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment