Académique Documents
Professionnel Documents
Culture Documents
Exercice 1 :
Nombres Premiers : un nombre entier strictement positif est « premier » s'il n’admet que 2
diviseurs : 1 et lui-même ; c’est-à-dire n'est pas le produit de deux nombres naturels plus petits.
Exemple : 2, 3, 5, 7, 11, 13, 17, 19 …
Exercice 2 :
1. On dispose d’une liste chainée d’entiers, écrire une fonction permettant de vérifier si cette
liste est triée par ordre croissant sur le champ val (2 pts).
2. Soient L1 et L2 deux listes chainées d’éléments entiers strictement croissantes :
L1 1 3 7 ×
L2 1 2 3 4 5 6 ×
A. Ecrire une fonction pour chercher les éléments qui existent dans les deux listes L1 et L2,
les afficher et retourner le nombre de ces éléments (2.5 pts).
ex : on affiche 1, 3 et on retourne 2
B. Ecrire une fonction qui supprime de la liste L2 les éléments de la liste L1, on retournera la
nouvelle liste L2 et L1 restera inchangée (4.5 pts).
ex : L2 2 4 5 6 ×
Exercice 3 :
1. Étant donné un arbre binaire de recherche B, implémenter un algorithme pour afficher par
ordre décroissant les éléments de B (2 pts).
Iterative
Solution 1 Solution 2
int is_prime1 (int n) int is_prime2 (int n)
{ {
int i = 2, d = 1; int i;
while (i < n && d == 1) for (i = 2; i < n; i++)
{ {
if (n % i == 0) if (n % i)
d = 0; continue;
i++; else
} return 0;
return d; }
} return 1;
}
Recursive
Solution 1 Solution 2
int is_prime3 (int n, int z) int is_prime4 (int num, int i)
{ if (n==0 || n==1) return 0; {
if (n <= 3)
return 1; if (i == 1)
if ((n % z) == 0) {
return 0; return 1;
else }
{ else
if (z * z < n) {
return is_prime3 (n, z + 1); if (num % i == 0)
else return 0;
return 1; else
} is_prime4 (num, i - 1);
} }
}
Exercice 2 : Listes chainées
2.A
q=p2;
p2=p2->nxt;
d=q;
while((p1!=NULL)&&(p2!=NULL))
{
if(p1->val==p2->val) {
q->nxt=p2->nxt;
free(p2);
p2=q->nxt;
p1=p1->nxt;
}
else {
if(p1->val > p2->val)
{
q=p2;
p2=p2->nxt;
}
else p1=p1->nxt;
}
}
return d;
}
Exercice 3 : Arbres Binaires & AVL
AFFICHAGE DECROISSANT
Algo Affichage_Décroissant (arbre : ArbreBinaireChaîné, noeud : ArbreBinaireChaîné)
début
si nœud<> vide alors
Affichage_Décroissant (arbre, noeud ->FD)
écrire (noeud -> val )
Affichage_Décroissant (arbre, noeud ->FG))
fsi
fin