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

Merge branch 'pk' into 'master'

Pk

See merge request !12
parents 8e4ca0ea 0c602ce0
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
```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