Corrigé 38  Enoncé

Interclassement de n listes linéaires chaînées

Création d'une liste (Tetell) de listes à partir de V


Soient I un entier Pll , Qll , Tetell des listes de listes d'entiers

    Tetell := NIL
    POUR I := 1 , 5
        ALLOUER ( Pll )
        AFF_VAL ( Pll , ELEMENT ( V [ I ] ) )
        SI Tetell <> NIL
            AFF_ADR ( Qll , Pll )
        SINON
            Tetell := Pll
        FSI
        Qll := Pll
    FPOUR
    AFF_ADR ( Pll , NIL )

Affichage de la liste de listes

Soit Tetell une listes de listes d'entiers et Pl une liste d'entiers.

    Pll := Tetell
    TANTQUE Pll <> NIL
        Pl := VALEUR ( Pll )
        TANTQUE Pl <> NIL :
            ECRIRE ( VALEUR ( Pl ) )
            Pl := SUIVANT ( Pl )
        FTANTQUE
        Pll := SUIVANT ( Pll )
    FTANTQUE

Interclassement

Soient Tetel la liste d'entiers à créer et Point un vecteur ( 5 ) de listes d'entiers.

    POUR I := 1 , 5
        AFF_ELEMENT ( Point [ I ] , ELEMENT ( V [ I ] ) )
    FPOUR
    Tetel := NIL
    Arret := FAUX
    TANTQUE NON Arret

        { recherche du min }
        Inf := 1000 { + infini }
        Indinf := 0
        POUR I := 1 , 5
            SI ELEMENT ( Point [ I ] ) <> NIL
                SI VALEUR ( ELEMENT ( Point [ I ] ) ) < Inf
                    Inf := VALEUR ( ELEMENT ( Point [ I ] ) )
                    Indinf := I
                FSI
            FSI
        FPOUR

        SI Indinf <> 0
            ALLOUER ( Pl )
            AFF_VAL ( Pl , VALEUR ( ELEMENT ( Point [ Indinf ] ) ) )
            SI Tetel ^= NIL
                AFF_ADR ( Ql , Pl )
            SINON
                Tetel := Pl
            FSI
            Ql := Pl
            AFF_ELEMENT ( Point [ Indinf ] ,
            SUIVANT ( ELEMENT ( Point [ Indinf ] ) ) )
        SINON
            Arret := VRAI
        FSI
    FTANTQUE
    AFF_ADR ( Pl , NIL )

Supprimer les doubles


Soit Tetel une liste d'entiers.

    { suppose la liste non vide }
    Pl := Tetel
    TANTQUE SUIVANT ( Pl ) <> NIL
        SI VALEUR ( Pl ) = VALEUR ( SUIVANT ( Pl ) )
            Ql := SUIVANT ( Pl )
            AFF_ADR ( Pl , SUIVANT ( SUIVANT ( Pl ) ) )
            LIBERER ( Ql )
        SINON
            Pl := SUIVANT ( Pl )
        FSI
    FTANTQUE