Corrigé 9. Enoncé

1. Hachage

Soient L, I et S les méthodes respectives d'essai linéaire, chaînage interne et chaînage séparé.

Définition des structures de données

    L :
        TYPE T1 = STRUCTURE
            Vide : BOOLEEN
            Cle : Typeqq
        FIN

    I :
        TYPE T2 = STRUCTURE
            Vide : BOOLEEN
            Cle : Typeqq
            Lien : ENTIER
        FIN

    S :
        TYPE T2 = STRUCTURE
            Vide : BOOLEEN
            Cle : Typeqq
            Lien : POINTEUR(Pt)
        FIN

Avec Pt défini comme suit :

    TYPE Pt = STRUCTURE
        Info : Typeqq
        Suiv : POINTEUR(Pt)
    FIN

Pour les trois méthodes, le tableau est défini comme suit:

    VAR T : TABLEAU(0..9) DE Ti;
    i = 1, 2, 3.

Remplissage du tableau par chaque méthode



Etats successifs du tableau après suppression de a et i dans le cas du chaînage interne

 



2. Arbres de recherche binaire

Construction de l'arbre


Listage des clés
Inordre         : 3, 8, 9, 10, 11, 12, 13, 15, 20, 35, 66
Préordre         : 12, 8, 3, 9, 11, 10, 15, 13, 20, 35, 66
Postordre         : 3, 10, 11, 9, 8, 13, 66, 35, 20, 15, 12

Algorithme récursif de parcours en ordre décroissant

    D(P) :
    SI P # NIL :
        D(Fd(P))
        Ecrire( Info(P) )
        D(Fg(P))
    FSI

Etat de la pile

Feuilles    Contenus de la pile                

    3     12, 8
    10     12, 11
    13         15
    66        vide

Fonction qui donne le suivant d'une feuille donnée

Soit Pt le pointeur d'une feuille F et � une pile contenant le chemin de la racine vers cette feuille. Soit Feuille(P) un prédicat égal à VRAI si P est une feuille, FAUX sinon.

    Continue := VRAI
    TANTQUE Continue :
        Remonter := VRAI
        Depiler(�, P, Possible)
        TANTQUE Remonter ET Possible :
            SI Pt = Fd(P) :
                Pt := P
                Depiler(�, P, Possible)
            SINON Remonter := FAUX FSI
        FINTANTQUE
        SI NON Possible :
            "Pas de suivant"
            Suivant := NIL
            Continue := FAUX
        SINON
            Si Fd(P) # NIL :
                Empiler(�, P)
                P := Fd(P)
                TANTQUE Fg(P) # NIL :
                    Empiler(�, P)
                    P := Fg(P)
                FINTANTQUE
                SI Feuille(P) :
                    Pt := P ; Continue := FAUX
                SINON Empiler(�, P) ; Pt := NIL FSI
            SINON
                Pt := P   
            FSI
        FSI
    FINTANTQUE