Professional Documents
Culture Documents
TD3
Soit Li une liste d’étudiants pour une classe donnée. Un étudiant est représenté par son : N, Nom, Prénom et sa Moyenne.
Q1) proposer une structure de donnée chainée qui permet de stocker la liste des étudiants. (La structure + la
déclaration d’une liste vide).
Q2) écrire une fonction qui permet de calculer la moyenne générale d’une classe Li.
Q3) écrire un programme qui permet d’éclater une liste Li en 2 sous listes L1 et L2, de telle sorte la première liste
L1 contient seulement les étudiants Admis, et la deuxième L2 contient les étudiants Ajournés
Exercice2 (Devoir à domicile : Considérer comme Micro interrogation N1) ! la dernière semaine avant les vacances
On considère 2 listes L1 et L2 ordonnées dont les éléments sont des entiers (N).
On veut créer une liste L (ordonnée) à partir des deux listes L1 et L2.
Q1) Proposer une structure de donnée chainée qui permet de stocker la liste des numéros. (La structure + la
déclaration d’une liste vide).
Q2) Supposons que L1 et L2 existent déjà. écrire les instructions (en langage C) qui permettent de créer la liste final
L.
L2 = [0, 2, 3, 8, 20]
M. bada 1
TD3 : les listes, les piles et les files Université de Batna 2 Algorithmique et structures de données
Les piles et les files
Dans les exercices avec piles et files il est suffit de faire appel aux sous algorithmes de base définis dans le cours.
Ecrire une fonction afficher (F1) qui affiche tous les éléments d’une file.
Ecrire une autre fonction défilerJusqua (F1, Elt) qui défile la file jusqu'à l'élément Elt.
Attention : Si l'élément Elt existe ! Elt ne sera pas défilé (il reste dans la file).
Si l'élément n'appartient pas à la file, alors la fonction défile toute la file.
Ecrire une procédure qui inverse une pile P1 de réels. Doit-on utiliser une pile ou une file ?
M. bada 2
TD3 : les listes, les piles et les files Université de Batna 2 Algorithmique et structures de données
Corr
Exo1 :
struct etudiant {
int N;
char nom[255];
char prenom [255] ;
float moyenne ;
etudiant* suivant=NULL;
};
etudiant* Liste ;
if (nbrEtudiant >0){
moyenneGenerale= somme / nbrEtudiant;
return moyenneGenerale;
}
M. bada 3
TD3 : les listes, les piles et les files Université de Batna 2 Algorithmique et structures de données
etudiant* L1=NULL;
etudiant* L2=NULL;
etudiant* ElementAInserer;
etudiant* position;
position= L;
if ( (*position).moyenne >= 10 ){
//copier les différents champs dans le nouvel element
(*ElementAInserer).N = (*position).N;
strcpy ((*ElementAInserer).nom, (*position).nom);
strcpy ((*ElementAInserer).prenom, (*position).prenom);
(*ElementAInserer).moyenne = (*position).moyenne;
}else {
//copier les différents champs dans le nouvel element
(*ElementAInserer).N = (*position).N;
strcpy ((*ElementAInserer).nom, (*position).nom);
strcpy ((*ElementAInserer).prenom, (*position).prenom);
(*ElementAInserer).moyenne = (*position).moyenne;
(*ElementAInserer).suivant = L2;
L2 = ElementAInserer;
position= (*position).suivant;
M. bada 4
TD3 : les listes, les piles et les files Université de Batna 2 Algorithmique et structures de données
Q1)
Void afficher (File F1)
{
int nbr ;
while ( File_vide (F1) != 1 ) {
nbr = Defiler (F1) ;
Printf (‘’%d’’,nbr) ;
Q2)
M. bada 5
TD3 : les listes, les piles et les files Université de Batna 2 Algorithmique et structures de données
Y = Depiler (P1) ;
Enfiler (F,Y) ;
Init_Pile (P1);
Y = Defiler (F) ;
Empiler (P1, Y)
M. bada 6