Vous êtes sur la page 1sur 2

Travaux Dirigs N 2

Module IC-2

Exercice 1

On suppose que listetrie est une liste simplement chaine (avec un chainage avant). 1. Proposer la structure de donne minimale pour reprsenter listetrie. 2. Ecrire l'algorithme de la fonction insretete() qui permet d'insrer une valeur en dbut de liste. 3. Ecrire l'algorithme de la fonction insrequeue() qui permet d'insrer une valeur en n de liste. 4. Ecrire l'algorithme de la fonction insrepos() qui permet d'insrer une valeur la position pos passe en paramtre. 5. Ecrire l'algorithme de la fonction recherchepos() qui permet de trouver la position pos laquelle devrait s'insrer la valeur val si l'on dsire que la liste reste trie.

Exercice 2
On dsire grer une course hippique o chaque cheval est reprsent par un enregistrement comme nous l'avons vu en cours. 1. Proposer la structure de donnes la plus pratique pour reprsenter la liste de tous les chevaux participant la course (sachant que le programmeur n'a aucune ide du nombre de chevaux pouvant concourir). 2. Ecrire une fonction insre_participant() permettant d'insrer 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 grer le dsistement d'un cheval, en supprimant le cheval correspondant au dossard pass en paramtre. 5. Ecrire la fonction affiche_participants() permettant d'acher les informations de tous les participants la course.

Soient liste1 et liste2 deux listes de rels doublement chaines tries par ordre croissant pour la premire et dcroissant pour la seconde. 1. Proposer l'algorithme de la fonction inverse_liste() permettant d'inverser la liste (par exemple liste2 passe en paramtre) de telle sorte que l'ordre du tri soit invers. 2. Proposer l'algorithme de la fonction concatne_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 rsultante liste3 soit une liste doublement chaine, trie par ordre croissant et compose de la fusion de tous les lments des deux listes liste1 et liste2.

Exercice 3

Exercice 4
On s'intresse ici aux polynmes une variable coecients entiers positifs ou nuls. Ces polynmes peuvent tre dnis par la rgle suivante :

polynome := monome '+' polynome | monome monome := rel '*' xpuissance | xpuissance | rel xpuissance := 'X' | 'X''^'entier
Par exemple : 4.5 * X^5 + 123 + X est un polynme correctement crit. 1. Proposer une structure de donnes pour reprsenter un polynme. 2. Proposer une fonction de saisie d'un polynme.

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 reprsenter une matrice creuse par une liste chaine, contenant uniquement les lments non nuls, avec leurs indices. Dans l'exemple prcdent on aurait :

A = [(2; (1; 2)); (1; (2; 1)); (3; (2; 3)); (6; (4; 4)); (0; (4; 5))]
1. Proposer une structure de donnes pour reprsenter une matrice creuse. 2. Proposer une fonction ajoute_matrice() qui fait la somme de deux matrices creuses de mmes dimensions. 2

Vous aimerez peut-être aussi