Vous êtes sur la page 1sur 3

Université des Sciences et de la Technologie Houari Boumediene

Faculté d'Informatique

INGENIEUR.INFO Algorithmique et Structures de Données Statiques


Année Universitaire : 2022/2023
Semestre : 2

Série d'exercices n°2


(Partie n°2 : listes chaînées)

Exercice 1 :
Soit 𝑨(𝑵, 𝑴) une matrice d'entiers (𝑵 ≤ 𝟐𝟎 𝒆𝒕 𝑴 ≤ 𝟑𝟎). Ecrire un algorithme qui génère deux listes à
partir de cette matrice.
1. La première regroupe les maximums des lignes (FIFO).
2. La deuxième les minimums des colonnes (LIFO).

Exercice 2 :
Soit une liste 𝑳 de valeurs entières. Ecrire les actions paramétrées suivantes permettant :
1. Le calcul du nombre d'éléments, et la détermination du maximum et du minimum.
2. L'insertion d'une valeur 𝑽𝑨𝑳 donnée dans une liste triée.
3. La suppression des doublons (éléments identiques).
4. La suppression de la valeur minimale d'une liste.
5. La création de la liste miroir de 𝑳 (avec et sans création d'une nouvelle liste).
6. L'éclatement de la liste 𝑳 en deux listes : 𝑳𝑷 contenant les entiers positifs et 𝑳𝑵 contenant les
entiers négatifs (sans création de nouvelles listes).

Exercice 3 :
Soient deux listes 𝑳𝟏 et 𝑳𝟐 de valeurs entières positives :
1. Ecrire une action paramétrée permettant de vérifier si 𝑳𝟏 et 𝑳𝟐 sont identiques (contiennent les
mêmes éléments dans le même ordre).
2. Ecrire une action paramétrée permettant de vérifier si 𝑳𝟏 est incluse dans 𝑳𝟐 (tous les éléments de
𝑳𝟏 se trouvent dans 𝑳𝟐, ici l'ordre ne compte pas).
3. Ecrire une action paramétrée permettant de vérifier si 𝑳𝟏 est une sous-liste de 𝑳𝟐 (𝑳𝟏 est incluse
dans 𝑳𝟐 dans le même ordre).
4. Ecrire une action paramétrée permettant de vérifier si 𝑳𝟏 et 𝑳𝟐 sont disjointe (𝑳𝟏 ∩ 𝑳𝟐 = Ø).
5. Ecrire une action paramétrée permettant de déplacer (sans allocation ni libération) les valeurs
paires de 𝑳𝟏 vers 𝑳𝟐, et, de déplacer les valeurs impaires de 𝑳𝟐 vers 𝑳𝟏.

Exercice 4 :
Soient deux listes 𝑳𝟏 et 𝑳𝟐 de valeurs entières triées dans l'ordre croissant. Ecrire une action paramétrée
permettant de fusionner les deux listes en une liste triée 𝑳𝟑 (avec et sans création d'une nouvelle liste).

Exercice 5 :
Soit 𝑻 un vecteur d’entiers (𝑵 ≤ 𝟏𝟎𝟎).
1. Ecrire une action paramétrée FLISTE permettant de créer une liste chainée 𝑳 contenant les
éléments de T dans le même ordre (en FIFO).
2. Soit 𝑽𝑨𝑳 une valeur entière donnée. Ecrire une action paramétrée permettant de créer une liste
𝑷𝑶𝑺𝑽𝑨𝑳 contenant toutes les positions de la valeur 𝑽𝑨𝑳 dans la liste 𝑳 (en LIFO).
3. Soit 𝑲 un entier positif. Ecrire une action paramétrée 𝑫𝑬𝑳𝑷𝑶𝑺 permettant de supprimer l'élément
se trouvant à la 𝑲ième position de la liste 𝑳.
1 sur 3
Exercice 6 :
Soit 𝑻 un vecteur de 26 listes de chaînes de caractères. La liste 1 contient des mots commençant par la
lettre 'A', la liste 2 contient des mots commençant par la lettre 'B, etc.
1. Donner la déclaration du vecteur 𝑻.
2. Ecrire une action paramétrée permettant de vérifier l'existence d'un mot 𝑴 dans 𝑻.

Exercice 7 :
Un pharmacien souhaite traiter les informations concernant son stock de médicaments par ordinateur.
On vous propose de représenter ces informations sous forme de liste linéaire chainée où chaque
élément contient le libellé d'un médicament, la quantité disponible (nombre de boites) et le prix
unitaire.
1. Donner les structures de données nécessaires à la représentation de ce stock.
2. Ecrire la procédure VENDRE (Med, NbBoites) permettant de retirer, si possible, NbBoites du
médicament Med du stock. Il faut supprimer du stock le médicament dont la quantité atteint 0.
3. Ecrire la procédure ACHETER (Med, NbBoites, Prix) permettant au pharmacien d'alimenter son
stock par NbBoites du médicament Med ayant le prix unitaire Prix DA. On considère qu'un
médicament prenne toujours le nouveau prix. Si le médicament n'existe pas, il faut l'insérer.

PARACETAMOL ACTIFED ASPIRINE


5 boîtes 15 boîtes 44 boîtes
117.00 DA 125.25 DA 78.25 DA
NIL

Exercice 8 :
Soit 𝑳 une liste d'étudiants. Chaque étudiant est défini par son nom N, son prénom P et sa moyenne
générale MG. Chaque élément de la liste contient un pointeur vers une liste des notes de l'étudiant. Un
élément de la liste des notes contient un coefficient CF et une moyenne MY.
1. Donner la déclaration des deux listes (𝑳𝑬𝑻𝑼𝑫, 𝑳𝑵𝑶𝑻𝑬).
2. Ecrire une action paramétrée MOYENNE permettant de calculer la moyenne d'une liste de notes.
3. Ecrire une action paramétrée DELIB permettant de calculer la moyenne générale de chaque
étudiant.
4. Ecrire une action paramétrée SUPPRIME permettant de supprimer les étudiants ayant une MG<5.
5. Ecrire une action paramétrée RESULTAT permettant de créer (sans allocation) deux listes 𝑳𝑨𝑫𝑴
et 𝑳𝑨𝑱𝑵 contenant respectivement les étudiants admis et les étudiants ajournés.

Nom Prénom MG Nom Prénom MG Nom Prénom MG NIL

CF CF CF CF CF CF
MY MY MY MY MY MY
NIL NIL NIL

Exercice 9 :
Soit 𝑳 une liste de mots de taille maximale 25 caractères.
1. Donner la déclaration de cette liste.
2. Ecrire une action paramétrée PALINDROME permettant de vérifier si un mot donné est
palindrome.
3. Ecrire une action paramétrée DETACHEPAL permettant de donner l'adresse du premier mot
palindrome de la liste 𝑳 et le détache de la liste sans le supprimer.
4. En utilisant l'action paramétrée DETACHEPAL, écrire une action paramétrée LISTEPAL
permettant de créer une liste 𝑳𝑷 contenant tous les mots palindromes de la liste 𝑳 dans l'ordre
inverse de leur apparition dans 𝑳 (sans création de nouvelle liste).
2 sur 3
Exercice 10 :
Soit 𝑳 une liste d’entiers.
1. Ecrire une action paramétrée DETACHE permettant de renvoyer l'adresse du minimum de la liste
𝑳 et de le détacher de la liste sans le supprimer.
2. En utilisant l'action paramétrée DETACHE, écrire une action paramétrée TRIER permettant de
trier la liste 𝑳 dans un ordre décroissant (sans création de nouvelle liste).

Exercice 11 :
1. Soit 𝑵𝑩𝑹 un entier strictement positif. Ecrire une action paramétrée permettant de créer une liste
𝑳 à partir de 𝑵𝑩𝑹, avec le premier chiffre de 𝑵𝑩𝑹 comme dernier élément de la liste et le dernier
chiffre de 𝑵𝑩𝑹 comme premier élément de la liste 𝑳 (exemple ). La liste 𝑳 représente ainsi le
nombre 𝑵𝑩𝑹.
2. Soit 𝑳 une liste représentant un nombre entier strictement positif et un entier 𝑵 compris entre 1 et
9. Ecrire une action paramétrée permettant de créer une liste 𝑳𝑴 représentant la multiplication de
𝑳 par 𝑵; sans procéder à la conversion de la liste 𝑳 en un nombre (exemple ).
3. Soit 𝑳 une liste représentant un nombre entier strictement positif et un entier 𝑵 compris entre 0 et
9. Ecrire une action paramétrée permettant de supprimer de 𝑳 toutes les occurrences de 𝑵
(exemple ).
4. Soit une liste 𝑳 représentant un entier 𝑵𝑩𝑹 strictement positif. Ecrire une action paramétrée
permettant de donner comme résultat le nombre 𝑵𝑩𝑹 (exemple ).

Exemple :
NBR = 26374
 L 4 7 3 6 2 NIL

L 4 7 3 6 2 NIL
N=2
LM 8 4 7 2 5 NIL
 L 4 7 3 6 2 NIL
N=9
LM 6 6 3 7 3 2 NIL

L 6 6 3 7 3 2 NIL
N=3
 L 6 6 7 2 NIL

L 6 6 7 2 NIL
 NBR = 2766

3 sur 3

Vous aimerez peut-être aussi