EMP
Algorithmique &Structures de données
Corrigé // Examen 1 // 2013 2014
SOIT
L UNE LISTE ;
Liberer_liste , Afficher_liste DES ACTIONS ; Cons UNE FONCTION ( LISTE ) ;
Inserer UNE FONCTION ( LISTE ) ; Tri UNE FONCTION ( LISTE ) ;
DEBUT //
Programme principal L := NIL ;L := Cons ( L , 10 , Nil ) ; ECRIRE ( 'Afficher la liste' ) ; APPEL Afficher_liste ( L ) ;
ECRIRE ( 'Afficher la liste triée' ) ; L := Tri ( L , Nil ) ;
APPEL Afficher_liste ( L ) ; L := Inserer ( L , Nil , 90 ) ; ECRIRE ( 'Afficher la liste' ) ; APPEL Afficher_liste ( L ) ;
APPEL Liberer_liste ( L ) ; ECRIRE ( 'Afficher la liste' ) ; APPEL Afficher_liste ( L ) ;
FIN
FONCTION
Cons ( L , N , P ) : LISTE ;
SOIT
V UN ENTIER ; L , P , Q DES LISTES ; N UN ENTIER ;
DEBUT
SI N > 0 LIRE ( V ) ; ALLOUER ( Q ) ; AFF_VAL ( Q , V ) ; AFF_ADR ( Q , NIL ) ; SI L = NIL
L := Q ; Cons := L ;
SINON
AFF_ADR ( P , Q ) FSI ;
Q := Cons ( L , N - 1 , Q ) // Affectation non significative FSI
FIN
ACTION
Afficher_liste ( L )
SOIT
L UNE LISTE ;
DEBUT
SI L <> NIL
ECRIRE ( VALEUR ( L ) ) ;
APPEL Afficher_liste ( SUIVANT ( L ) ) FSI
FIN
FONCTION
Inserer ( L , Prec , V ) : LISTE ;
SOIT
L , Q , Prec DES LISTES ; V UN ENTIER ;
DEBUT
SI L <> NIL
SI V < VALEUR ( L ) ALLOUER ( Q ) ; AFF_VAL ( Q , V ) ; AFF_ADR ( Q , L ) ; SI Prec <> NIL
AFF_ADR ( Prec , Q ) SINON
L := Q ;
FSI ;
Inserer := Q SINON
SI SUIVANT ( L ) <> NIL
Q := Inserer ( SUIVANT ( L ) , L , V ) // Affectation non significative SINON
ALLOUER ( Q ) ; AFF_VAL ( Q , V ) ; AFF_ADR ( L , Q ) ; AFF_ADR ( Q , NIL ) ; FSI ;
Inserer := L FSI ;
FSI ;
FIN
FONCTION
Tri ( L , N ) : LISTE ;
SOIT
L UNE LISTE ; N UN ENTIER ;
DEBUT
SI N = 1 Tri := L SINON
Tri := Inserer ( Tri ( SUIVANT ( L ) , N - 1 ) , L , VALEUR ( L ) ) ;
FSI
FIN
ACTION
Liberer_liste ( L )
SOIT
L UNE LISTE ; Sauv UNE LISTE ;
DEBUT
SI L <> NIL
Sauv := SUIVANT ( L ) ; LIBERER ( L ) ;
L := NIL ;
APPEL Liberer_liste ( Sauv ) FSI ;
FIN
Données :
Lecture du scalaire V : 45
Lecture du scalaire V : 12
Lecture du scalaire V : 85
Lecture du scalaire V : 234
Lecture du scalaire V : 934
Lecture du scalaire V : 555Lecture du scalaire V : 21
Lecture du scalaire V : 38
Lecture du scalaire V : 93
Lecture du scalaire V : 127
Résultats :
Afficher la liste 45
12 85 234
934 555 21 38 93 127
Afficher la liste triée 12
21 38 45 85 93 127 234 555 934
Afficher la liste 12
21 38 45 85 90 93 127 234 555 934
Afficher la liste