Vous êtes sur la page 1sur 5

Structure de données (Questions de cours)

1. Définition d’un algorithme


Un algorithme est un ensemble fini de tâches dont chacune est :
- Défini de façon rigoureuse et non ambiguë
- Effective (pouvant être réalisée en un temps fini)
2. Définition d’un pointeur
Un pointeur est un type simple qui contient l’adresse d’un espace de la mémoire.
p : adresse de la variable pointée
*p : valeur de la variable pointée
&p : adresse du pointeur p
3. Utilité des pointeurs
- Réaliser des structures dynamiques (allocation dynamique de la mémoire)
telles que les listes chaînées, les tableaux dynamiques
- Passage par référence des paramètres (fonctions)
- Gestion efficace de structure complexe (graphe, arbre)
4. Utilité de l’allocation dynamique
L’allocation dynamique permet en cours d’exécution d’un programme d’allouer un
espace mémoire dont la taille n’est pas connue au préalable lors de la
compilation.
5. Quelles sont les fonctions qui réalisent l’allocation dynamique ?
Les fonctions qui réalisent l’allocation dynamique sont les fonctions malloc () et
calloc ().
6. Utilisation de la fonction malloc ()
La fonction malloc (N) renvoie l’adresse d’un bloc mémoire de N octets libres et
NULL s’il n’y a pas assez d’espace libre.
7. Utilisation des opérateurs sizeof (type) et free ()
- sizeof (type) fournit la taille de « type » dans la machine utilisée
- free () libère de l’espace mémoire préalablement alloué par les fonctions
malloc () ou calloc ().
8. Différence entre malloc et calloc
La différence entre les fonctions malloc () et calloc () est que la fonction calloc ()
contrairement à malloc () après avoir alloué l’espace mémoire initialise tous les
éléments à 0.
9. Allocation dynamique de mémoire pour un tableau à deux dimensions
/*On crée un tableau tab[m][n]*/
int **tab, m, n, i;
scanf(“%d %d”, &m, &n);
*tab=(int **)malloc(m*sizeof(int*));
for(i=0;i<n;i++){
tab[i]=(int *)malloc(n*sizeof(int));
}
10.Quand dit-on qu’une fonction est récursive ?
Une fonction est dite récursive lorsqu’elle est auto-référent c’est-à-dire qu’elle
s’appelle elle-même (directement ou indirectement) dans sa définition.
11. Utilité de la récursivité
- La récursivité sert pour définir les structures de données : arbres,
expressions arithmétiques
- La récursivité est utilisée pour accélérer les algorithmes
12. Quels sont les éléments à considérer lors de la définition d’une fonction
récursive ?
- Equation de récursivité : la fonction est auto-référent
- Condition d’arrêt
- Convergence
13. Fonction récursive bien définie
14.Définition d’une structure linéaire
Une structure linéaire est une structure conçue de telle sorte que chaque fois que
l’on passe du début à la fin de la structure, on parcourt tous ses éléments toujours
dans le même ordre.
15.Définition d’une liste
Une liste est un ensemble ordonné d’éléments dans lequel on peut accéder à
n’importe quel élément. Une liste est une structure linéaire.
16.Comment peut-on faire l’implantation des listes ?
- Par tableau
- Par chaînage
17. Modèle d’implantation par tableau
DEBUT
TypeEl tab[TAILLE_MAX]
Int taille
FIN
18. Limites du modèle d’implantation des listes par tableau
- Lorsque la taille des données dépasse celle du tableau
- Quand il y’a une grande fluctuation des données, l’occupation de la
mémoire n’est pas optimisée
- L’opération de décalage des éléments vers la gauche ou vers la droite cause
une lenteur dans l’exécution
19. Définition d’une liste chaînée
Une liste chaînée est un ensemble fini d’éléments de même type qui se suivent
logiquement (et non physiquement).
20. Définition d’une pile
Une pile est une structure linéaire qui se caractérise par la méthode d’insertion et
d’extraction d’un élément qui se font toujours à la même extrémité (Last In First
Out).
21. Citez des exemples de traitement utilisant les piles
- Boucles imbriquées
- Parcours d’arbres
- Procédures locales
- Récursivité
22. Définition d’une file
Une file est une structure linéaire ayant un caractère particulier : l’insertion se fait
à une extrémité et l’extraction se fait à l’autre extrémité.
23. Définition d’un arbre
Un arbre est une structure homogène dont chaque élément, appelé nœud,
contient de l’information et plusieurs liens(pointeurs) vers des éléments du même
type appelés nœuds fils ou successeurs.
24. Degré d’un nœud
Le nombre de fils d’un nœud n est appelé degré du nœud.
25. Terminologie
- Les nœuds terminaux, qui n’ont pas de fils, sont appelés feuilles ou nœuds
externes.
- Les nœuds qui ne sont pas des feuilles ou racine sont appelés nœuds
internes.
- Le prédécesseur d’un nœud est son père ou ancêtre direct.
- Le successeur d’un nœud est son fils ou descendant direct.
- Une branche de l’arbre est un chemin de la racine à l’une de ses feuilles.
- Le bord gauche de l’arbre est le plus long chemin depuis la racine en ne
suivant que les fils gauches.
- Le bord droit de l’arbre est le plus long chemin depuis la racine en ne
passant que par les fils droits.
- Un chemin de longueur k entre deux nœuds u et v d’un arbre est la suite
de nœuds {n0, n1, …, nk} telle que n0=u et nk=v et pour tout i appartenant à
l’intervalle [1…p], ni-1=père(ni).
- La hauteur d’un nœud est le nombre maximum de liens qu’il faut parcourir
pour aller à une feuille.
- La hauteur d’un arbre est la hauteur de sa racine.
Soit A un arbre et n un nœud de A.
𝟎 𝒔𝒊 𝒏 = 𝒇𝒆𝒖𝒊𝒍𝒍𝒆
𝒉𝑨 (𝒏) = {
𝟏 + 𝒎𝒂𝒙 {𝒉𝑨 (𝒆), 𝒐ù 𝒆 𝒇𝒊𝒍𝒔 𝒅𝒆 𝒏}
26. Combien de type de parcours d’arbre existe-t-il ? Citez-les !
Il y’a deux catégories de parcours d’arbres :
 Le parcours en profondeur (préfixe, suffixe, symétrique)
 Le parcours en largeur
27. Définition d’un arbre binaire
Un arbre binaire est un arbre de degré 2.
- Chaque fils d’un nœud est soit fils gauche soit fils droit
- Aucun nœud n’a plus d’un fils gauche ni plus d’un fils droit
28. Définition d’un arbre binaire complet
Un arbre binaire complet est un arbre dont chaque nœud est soit une feuille soit
de degré 2.
29. Nombre maximal de nœud dans un arbre binaire
𝑝−1
∑ 2 𝑖 = 2𝑝 − 1
𝑖=0

Vous aimerez peut-être aussi