Sujet d`examen 2004 (pdf 37 Ko)

publicité
IUP AISEM 2
Examen Algorithmique et C
12 Mars 2004
Duré 2h - Documents autorisées - Les exercices sont indépendantes
Exercice 1:
Recherche des deux plus grands éléments
Soit un tableau T non-trié de N valeurs entières distinctes (de T0 à TN −1 ).
1.1
a. Proposez un algorithme permettant de déterminer la plus grande valeur contenue dans le
tableau.
b. Donnez le code en C d’une fonction renvoyant cette valeur.
c. Evaluez la complexité de l’algorithme en nombre de comparaisons.
1.2
a. Proposez un algorithme permettant de déterminer la deuxième plus grande valeur contenue
dans le tableau.
b. Donnez le code C d’une fonction renvoyant les deux valeurs (plus grande valeur et deuxième
plus grande valeur).
c. Evaluez la complexité de votre algorithme comme précédemment.
1.3
Les éléments du tableau sont insérés dans un arbre binaire de recherche.
a. Représentez l’arbre obtenu pour la liste de valeurs suivantes: { 3, 10, 2, 8, 9, 1, 15, 7, 6 }
b. Proposez un algorithme pour déterminer la plus grande valeur de l’arbre et la seconde plus
grande valeur. Illustrez le fonctionnement de votre algorithme sur l’arbre précédent.
c. Donnez le code en C de cet algorithme sous forme d’une fonction permettant de récupérer les
deux valeurs. Un noeud de l’arbre est représenté 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: t arbre* racine.
Exercice 2:
Recherche auto-adaptative
Soit une liste chaı̂née d’entiers. Chaque élément de la liste est défini ainsi:
struct s_element
{
int numero;
int code;
struct s_element* suiv;
};
typedef struct s_element t_element;
On souhaite réorganiser la liste après chaque recherche en faisant passer l’élément cherché (et
trouvé!) en tête de liste.
a. Donnez un algorithme permettant d’efectuer la recherche de l’élément de numero x et son
déplacement en tête de liste si l’élément fait partie de la liste.
IUP AISEM 2
Examen Algorithmique et C
12 Mars 2004
b. Illustrez son fonctionnement en dessinant la liste composée des éléments suivants: { 3, 5,
8, 2, 1 } et en représentant son état après chacune des recherches suivantes (effectuées
séquentiellement):
x=3, x=8, x=1, x=10
Exercice 3:
Expressions arithmétiques
Soit l’expression arithmétique suivante E exprimée sous forme post-fixée:
{ x, 2, y, ∗, −, 3, ∗, y, z, /, +}
dans laquelle on n’a utilisé que des opérateurs binaires. On veut évaluer cette expression en
utilisant une pile.
3.1
a. Représentez l’évolution de la pile après le traitement de chaque élément de la liste.
b. Donner l’expression de E sous forme infixée en utilisant des parenthèses si nécessaire.
c. Déterminez la valeur de E pour x=2, y=6, z=2
3.2
On peut représenter une expression arithmétique sous forme d’un arbre binaire dont les feuilles
sont les opérandes et les noeuds intermédiaires (y compris la racine) sont les opérateurs. On se place
dans le cas de la représention d’expressions arithmétiques sous forme infixée.
a. Représentez sous forme d’un arbre binaire l’expression: x + y
b. Même question pour les expressions: x + 2 ∗ y et (x + 2) ∗ y.
Exercice 4:
Permutation et listes chaı̂nées
Soit la liste chaı̂née d’entiers suivante:
tete
1
3
2
4
5
(NULL)
On peut écrire:
– 1 à pour suivant 3
– 2 à pour suivant 4
– 3 à pour suivant 2
– 4 à pour suivant 5
– 5 à pour suivant NULL
On souhaite permuter les éléments 2 et 4 de la liste.
a. Dessinez la liste après permutation.
b. Indiquez quel est le suivant de chaque élément après la permutation.
c. Indiquez quels sont les éléments dont ont doit modifier le champ contenant le pointeur vers
l’élément suivant.
d. On suppose que l’on possède 3 pointeurs:
– un vers le premier élément à permuter noté p1,
– un vers le second élément à permuter noté p2,
– enfin un vers l’élément précédant le premier élément à permuter noté pp.
Proposez un algorithme permettant d’effectuer la permutation en utilisant ces 3 pointeurs.
On notera x->suiv le pointeur vers l’élément 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 à partir de la connaissance de p1 et du pointeur
vers le début de la liste tete.
Téléchargement