IUP AISEM 2 Examen Algorithmique et C 12 Mars 2004
Dur´e 2h - Documents autoris´ees - Les exercices sont ind´ependantes
Exercice 1: Recherche des deux plus grands ´el´ements
Soit un tableau T non-tri´e de N valeurs enti`eres distinctes (de T0`a TN1).
1.1
a. Proposez un algorithme permettant de d´eterminer la plus grande valeur contenue dans le
tableau.
b. Donnez le code en C d’une fonction renvoyant cette valeur.
c. Evaluez la complexit´e de l’algorithme en nombre de comparaisons.
1.2
a. Proposez un algorithme permettant de d´eterminer la deuxi`eme plus grande valeur contenue
dans le tableau.
b. Donnez le code C d’une fonction renvoyant les deux valeurs (plus grande valeur et deuxi`eme
plus grande valeur).
c. Evaluez la complexit´e de votre algorithme comme pr´ec´edemment.
1.3
Les ´el´ements du tableau sont ins´er´es dans un arbre binaire de recherche.
a. Repr´esentez l’arbre obtenu pour la liste de valeurs suivantes: {3, 10, 2, 8, 9, 1, 15, 7, 6 }
b. Proposez un algorithme pour d´eterminer la plus grande valeur de l’arbre et la seconde plus
grande valeur. Illustrez le fonctionnement de votre algorithme sur l’arbre pr´ec´edent.
c. Donnez le code en C de cet algorithme sous forme d’une fonction permettant de r´ecup´erer les
deux valeurs. Un noeud de l’arbre est repr´esent´e par la structure suivante:
struct s_arbre
{
int valeur;
struct s_arbre * pere;
struct s_arbre * gauche;
struct s_arbre * droit;
};
typedef struct s_arbre t_arbre;
et la racine de l’arbre est accessible par le pointeur: tarbre* racine.
Exercice 2: Recherche auto-adaptative
Soit une liste chaˆın´ee d’entiers. Chaque ´el´ement de la liste est d´efini ainsi:
struct s_element
{
int numero;
int code;
struct s_element* suiv;
};
typedef struct s_element t_element;
On souhaite eorganiser la liste apr`es chaque recherche en faisant passer l’´el´ement cherce (et
trouv´e!) en ete de liste.
a. Donnez un algorithme permettant d’efectuer la recherche de l’´el´ement de numero x et son
eplacement en ete de liste si l’´el´ement fait partie de la liste.
IUP AISEM 2 Examen Algorithmique et C 12 Mars 2004
b. Illustrez son fonctionnement en dessinant la liste compos´ee des ´el´ements suivants: {3, 5,
8, 2, 1 }et en repr´esentant son ´etat apr`es chacune des recherches suivantes (effectu´ees
equentiellement):
x=3, x=8, x=1, x=10
Exercice 3: Expressions arithm´etiques
Soit l’expression arithm´etique suivante E exprim´ee sous forme post-fix´ee:
{x, 2, y, ,, 3, , y, z, /, +}
dans laquelle on n’a utilis´e que des op´erateurs binaires. On veut ´evaluer cette expression en
utilisant une pile.
3.1
a. Repr´esentez l’´evolution de la pile apr`es le traitement de chaque ´el´ement de la liste.
b. Donner l’expression de E sous forme infix´ee en utilisant des parenth`eses si n´ecessaire.
c. eterminez la valeur de E pour x=2, y=6, z=2
3.2
On peut repr´esenter une expression arithm´etique sous forme d’un arbre binaire dont les feuilles
sont les op´erandes et les noeuds interm´ediaires (y compris la racine) sont les op´erateurs. On se place
dans le cas de la repr´esention d’expressions arithm´etiques sous forme infix´ee.
a. Repr´esentez sous forme d’un arbre binaire l’expression: x+y
b. eme question pour les expressions: x+ 2 yet (x+ 2) y.
Exercice 4: Permutation et listes chaˆın´ees
Soit la liste chaˆın´ee d’entiers suivante:
tete (NULL)
1 3 2 4 5
On peut ´ecrire:
1 `a pour suivant 3
2 `a pour suivant 4
3 `a pour suivant 2
4 `a pour suivant 5
5 `a pour suivant NULL
On souhaite permuter les ´el´ements 2 et 4 de la liste.
a. Dessinez la liste apr`es permutation.
b. Indiquez quel est le suivant de chaque ´el´ement apr`es la permutation.
c. Indiquez quels sont les ´el´ements dont ont doit modifier le champ contenant le pointeur vers
l’´el´ement suivant.
d. On suppose que l’on poss`ede 3 pointeurs:
un vers le premier ´el´ement `a permuter not´e p1,
un vers le second ´el´ement `a permuter not´e p2,
enfin un vers l’´el´ement pr´ec´edant le premier ´el´ement `a permuter not´e pp.
Proposez un algorithme permettant d’effectuer la permutation en utilisant ces 3 pointeurs.
On notera x->suiv le pointeur vers l’´el´ement suivant de x.
e. On suppose maintenant que la seule information dont on dispose est la valeur du pointeur p1.
Indiquez comment on peut obtenir p2 et pp `a partir de la connaissance de p1 et du pointeur
vers le d´ebut de la liste tete.
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !