Correction EMD2 – ALGO2

publicité
Institut National d’Informatique
Année 07/08
Correction EMD2 – ALGO2
Exercice 1 :
Algorithme qui donne le ‘Top’ d’une pile dans une implémentation dynamique.
Rappels :
Pile = ptr(Tmaillon) ;
Tmaillon = Structure
Val : typeqlq ;
Adr : ptr(Tmaillon)
Fin ;
Top ( P : Pile ) : typeqlq
SI P <> NIL
Top := Valeur(P)
Fsi
Exercice 2 :
a) Algorithme récursif qui determine la longueur du plus grand code dans l’arbre (cela revient à
calculer la profondeur de l’arbre)
Prof( R : ptr )
SI R=NIL
Prof := 0
SINON
SI ( fg(R)=NIL ET fd(R)=NIL )
Prof := 0
SINON
Prof := Max( Prof(fg(R), Prof(fd(R) ) + 1
FSI
FSI
b) Décoder une chaîne : On lit la chaîne caractère par caractère jusqu’à la fin de chaîne.
Decoder( Racine )
p := Racine ;
Lire( car ) ;
TQ car <> finchaine
SI car = ‘0’
p := fg(p)
SINON
p := fd(p)
FSI
SI ( fg(p)=NIL ET fd(p)=NIL )
Ecrire( info(p) ) ;
p := Racine
FSI ;
Lire( car )
FTQ
1
Exercice 3 :
a) Algorithme récursif qui affiche la liste des points de coordonnée x = a
L’appel initial se fait avec : Rech( Racine, a, 0 )
Rech( R : ptr ; a :entier ; Niv : entier )
SI R <> NIL
SI (Niv mod 2 = 0) /* niveau pair */
SI info(R).coord = a
EcrireListe( info(R).tete )
SINON
SI info(R).coord < a
Rech( fg(R) , a , Niv+1 )
SINON
Rech( fd(R) , a , Niv+1 )
FSI
FSI
SINON
/* niveau impair */
RechListe( info(R).tete , a );
Rech ( fg(R) , a , Niv+1 );
Rech ( fd(R) , a , Niv+1 )
FSI
FSI
EcrireListe( tete )
TQ tete <> NIL
Ecrire( valeur(tete).Y );
Tete := Suivant(tete)
FTQ
RechListe( tete , a )
Stop := FAUX;
TQ ( tete <> NIL ET Non Stop )
SI valeur(tete).X = a
Ecrire( Valeur(tete).Y )
Stop : = VRAI
SINON
Tete := Suivant(tete)
FSI
FTQ
b) Dans le cas d’un espace tridimensionnel, il faut avoir un arbre organisé en trois niveaux
correspondant respectivement aux coordonnées X, Y et Z.
Au niveau de chaque nœud, la coordonnée stockée sera :
X si le niveau du nœud, modulo 3 est égal à 0
Y si le niveau du nœud, modulo 3 est égal à 1
Z si le niveau du nœud, modulo 3 est égal à 2
A chaque nœud est associé (dans le champs tete) une liste de points (X,Y,Z) ayant la même valeur
que la coordonnée correspondante au niveau courant.
2
Téléchargement