Académique Documents
Professionnel Documents
Culture Documents
Élément : C avancé
Travaux Pratiques
Le but de ce TP est de maîtriser le principe des listes simplement chaînées ainsi que les fonctions
nécessaires pour les manipuler.
On souhaite représenter les informations des étudiants d’une promotion sous forme d’une Liste
Simplement Chaînée (LSC). Chaque maillon de la liste contient les informations d’un étudiant
et un pointeur vers le maillon suivant.
Pour avoir le contrôle de la liste, on sauvegarde les trois éléments suivants debut, fin et
NB_Etudiants qui représentent respectivement un pointeur vers le début de la liste, un
pointeur vers la fin de la liste et une variable entière qui détermine le nombre d’étudiants de la
promotion.
1. Donner les structures de données à utiliser pour implémenter la liste simplement chaînée.
2. Ecrire une fonction Initialiser() qui permet d’initialiser la liste chaînée.
3. Ecrire une fonction Saisir_Etudiant()qui permet d’allouer la mémoire d’un
nouveau étudiant et place ses informations à l'intérieur. Cette fonction retourne l’adresse
de ce nouveau étudiant.
4. Ecrire une fonction Inserer_Liste_Vide() qui permet d’insérer un étudiant dans
une liste vide.
5. Ecrire la fonction Inserer_Debut() qui permet d’insérer un étudiant au début de la
liste.
6. Ecrire la fonction Inserer_Fin() qui permet d’insérer un étudiant à la fin de la liste.
7. Ecrire une fonction Afficher() qui permet d’afficher les informations de tous les
étudiants.
8. Ecrire une fonction Diviser_Promo() qui permet de diviser la promotion en deux
groupes, le premier groupe contiendra les étudiants admis (ceux qui ont une note >=12) et
le deuxième contiendra les non admis.
9. Ecrire une fonction Trier_Etudiants()qui permet de trier les étudiants admis par
ordre de mérite.
10. Ecrire une fonction Detruire()qui libère toute la mémoire utilisée par la liste chaînée.
11. Appeler toutes les fonctions précédentes dans la fonction main().
Page 2 sur 5
Travaux pratiques Tronc Commun
C avancé Année : 2023 – 2024
TP2 : Piles
Le but de ce TP est de maîtriser le principe des piles ainsi que les fonctions nécessaires pour les
manipuler.
Exercice 1 : Palindrome
Un palindrome est une chaîne de caractères qui se lit de la même manière de gauche à droite et
de droite à gauche. En utilisant une pile, écrivez un code en langage C qui permet de vérifier si
une chaîne de caractères est palindrome.
Exemple :
Dans un logiciel de calcul formel ou, plus généralement dans un éditeur de texte (par exemple
l’éditeur utilisé pour écrire des codes), il y a une gestion dynamique du parenthésage. En effet,
si une parenthèse fermante de plus est ajoutée ou si elle n’est pas de même nature (une accolade
au lieu d’un crochet par exemple) que la parenthèse ouvrante associée alors un message d’erreur
est envoyé. Par exemple, les deux expressions suivantes sont erronées :
𝑎𝑚 × 𝑏 𝑚 = (𝑎 × 𝑏]𝑚
(La parenthèse (crochet) fermante n’est pas de même nature que la « parenthèse » ouvrante)
Algorithme :
L’algorithme de traitement de la chaîne de caractères repose sur l’idée simple que toute
parenthèse fermante rencontrée doit être associée dans la pile à la parenthèse (qui doit donc
exister !) ouvrante de même nature située au sommet de la pile.
Page 3 sur 5
Travaux pratiques Tronc Commun
C avancé Année : 2023 – 2024
• Le caractère n’est pas une parenthèse : Dans ce cas, on ne fait rien et on traite l’éventuel
caractère suivant.
• Le caractère est une parenthèse ouvrante : Dans ce cas, la parenthèse ouvrante est placée
dans la pile.
• Le caractère est une parenthèse fermante : C’est dans ce cas que le traitement est le plus
intéressant. On doit vérifier que la pile des parenthèses ouvrantes est non vide. Par
ailleurs, le sommet de la pile doit être une parenthèse ouvrante de même nature que la
parenthèse fermante rencontrée. Si les deux conditions suivantes sont vérifiées, on
dépile.
Page 4 sur 5
Travaux pratiques Tronc Commun
C avancé Année : 2023 – 2024
Partie 1 :
Partie 2 :
Pour pouvoir traiter les données stockées dans un ABR, il faut parvenir à atteindre les nœuds
contenants ces données. Ceci demande des méthodes ou des algorithmes qui permettent
d’explorer un arbre dans le but de visiter tous ses nœuds.
8. Ecrire les fonctions des trois parcours en profondeur : infixe, suffixe et préfixe.
Page 5 sur 5