Travaux Dirigés N 2 - e

publicité
Travaux Dirigés N2
Module IC-2
Exercice 1
On suppose que listetriée est une liste simplement chainée (avec un chainage avant).
1. Proposer la structure de donnée minimale pour représenter listetriée.
2. Ecrire l'algorithme de la fonction insèretete() qui permet d'insérer une valeur en
début de liste.
3. Ecrire l'algorithme de la fonction insèrequeue() qui permet d'insérer une valeur en
n de liste.
4. Ecrire l'algorithme de la fonction insèrepos() qui permet d'insérer une valeur à la
position pos passée en paramètre.
5. Ecrire l'algorithme de la fonction recherchepos() qui permet de trouver la position
pos à laquelle devrait s'insérer la valeur val si l'on désire que la liste reste triée.
Exercice 2
On désire gérer une course hippique où chaque cheval est représenté par un enregistrement
comme nous l'avons vu en cours.
1. Proposer la structure de données la plus pratique pour représenter la liste de tous
les chevaux participant à la course (sachant que le programmeur n'a aucune idée du
nombre de chevaux pouvant concourir).
2. Ecrire une fonction insère_participant() permettant d'insérer un nouveau cheval
en n de liste.
3. Ecrire une fonction saisie_participants() permettant d'inscrire chacun des participants par ordre de dossard, c'est-à-dire d'inscription, croissant.
4. Ecrire une fonction supprime_participant() permettant de gérer le désistement d'un
cheval, en supprimant le cheval correspondant au dossard passé en paramètre.
5. Ecrire la fonction affiche_participants() permettant d'acher les informations de
tous les participants à la course.
1
Exercice 3
Soient liste1 et liste2 deux listes de réels doublement chainées triées par ordre croissant
pour la première et décroissant pour la seconde.
1. Proposer l'algorithme de la fonction inverse_liste() permettant d'inverser la liste
(par exemple liste2 passée en paramètre) de telle sorte que l'ordre du tri soit inversé.
2. Proposer l'algorithme de la fonction concatène_liste() qui met liste2 au bout de
liste1.
3. Proposer l'algorithme de la fonction fusionne_liste() qui fusionne liste1 et liste2
de telle sorte que la liste résultante liste3 soit une liste doublement chainée, triée par
ordre croissant et composée de la fusion de tous les éléments des deux listes liste1 et
liste2.
Exercice 4
On s'intéresse ici aux polynômes à une variable à coecients entiers positifs ou nuls. Ces
polynômes peuvent être dénis par la règle suivante :
polynome := monome '+' polynome | monome
monome
:= réel '*' xpuissance | xpuissance | réel
xpuissance := 'X' | 'X''^'entier
Par exemple : 4.5 * X^5 + 123 + X est un polynôme correctement écrit.
1. Proposer une structure de données pour représenter un polynôme.
2. Proposer une fonction de saisie d'un polynôme.
Exercice 5
Les matrices creuses sont des matrices comprenant une majorité de 0. Par exemple A la
matrice d'entiers 4 × 5 suivante :




A=
0
1
0
0
2
0
0
0
0
3
0
0
0
0
0
6
0
0
0
0





Par souci d'économie, on peut représenter une matrice creuse par une liste chainée, contenant
uniquement les éléments non nuls, avec leurs indices. Dans l'exemple précédent on aurait :
A = [(2; (1; 2)); (1; (2; 1)); (3; (2; 3)); (6; (4; 4)); (0; (4; 5))]
1. Proposer une structure de données pour représenter une matrice creuse.
2. Proposer une fonction ajoute_matrice() qui fait la somme de deux matrices creuses
de mêmes dimensions.
2
Téléchargement