Exercice 1 : 8 points
Dans cet exercice on considère la structure de liste chainée suivant le modèle de base suivant :
Q1) Implémenter une méthode void rotation(cellule *) qui permet de déplacer le dernier élément
d’une liste simplement chaînée dans le début de cette liste (sans créer une nouvelle cellule).
Q2) Implémenter une méthode void concat(cellule * L, cellule *M) pour concaténer la liste M
à la fin de la liste L
Q3) Implémentez la méthode void clone (cellule *L, cellule * CL), L est supposée remplis et CL
vide. La fonction permettra de cloner la liste L dans la nouvelle liste CL.
Exercice 2 : 7 points
1
ENSAM-Casablanca Filière IAGI 2020-2021
X-men avait une célèbre histoire de guerre. Durant une guerre il fut pris au piège dans une cave avec son groupe
de 40 soldats, entouré par les troupes ennemies. La légende raconte que le groupe encerclé préféra mettre fin à
leurs vies plutôt que d'être capturé. Ainsi x-men et ses soldats formèrent un cercle et décidèrent de se tuer
mutuellement et successivement. De manière à ce qu'un soldat se fait tuer par un autre soldat, il faut choisir
ensuite le prochain soldat d’une certaine manière imprédictible (suivant un algorithme), ainsi de suite jusqu'à ce
qu'il ne reste qu'un seul survivant. Restant seul, ce dernier est censé se suicider lui-même. X-men, qui ne
souhaitait pas mourir, doit trouver rapidement la place sûre, c'est-à-dire la place de la dernière personne debout,
sans que quiconque ne reste pour le tuer. Ainsi il resta en vie et put par la suite raconter cette légende.
Soit N nombres 1, 2, 3,…, N sont disposés en cercle. On les enlève un par un suivant le procédé suivant : On part
de 1, qu’on enlève, et on avance d’une place. On tombe sur 2 que l’on enlève, et l’on avance de deux places
(correspondant au nombre que l’on vient de supprimer). On tombe sur 4, etc. A chaque étape, après avoir enlevé
le nombre k, on avance de k place sur le cercle. A la fin, il ne reste qu’un seul nombre et l’on s’arrête. Par exemple
pour N=9, les éléments supprimés sont 1,2,4,8,5,6,3,7, et il reste le 9 ( voir la figure suivante).
2
ENSAM-Casablanca Filière IAGI 2020-2021
On veut programmer cela pour afficher le nombre final, et l’on utilise pour cela une liste chaînée doublement
circulaire.
• Chaque cellule à deux pointeurs : un pointeur qui pointe sur la cellule suivante et un pointeur qui pointe
sur la cellule précédente.
• Le pointeur (suivant) du dernier élément pointe sur le premier élément. Le pointeur (précèdent) du
premier élément pointe sur le dernier élément.
Bon courage