Najah.
Mon plan de révision⚡ Défi flash

Informatique · Écoles d'ingénieurs — ENSMR (Mines Rabat)

Structures de données avancées

Le cours expliqué simplement, les questions que tous les élèves se posent et des exercices type examen national. Programme marocain, gratuit.

📘 Fiche de cours

L'essentiel du cours

Les structures de données avancées permettent d'organiser les informations pour optimiser les algorithmes.

  1. Piles (Stacks) : Structure LIFO. Opérations : empiler (push), dépiler (pop).
  2. Files (Queues) : Structure FIFO. Opérations : enfiler (enqueue), défiler (dequeue).
  3. Listes chaînées : Séquence de nœuds. Chaque nœud contient une donnée et un pointeur vers le suivant.
  4. Arbres binaires : Structure hiérarchique. Racine, nœuds, feuilles. Propriété : $nœud.gauche < nœud < nœud.droite$ pour les ABR (Arbres Binaires de Recherche).

Méthodes à maîtriser

  • Insertion/Suppression : Savoir manipuler les pointeurs pour insérer un nœud dans une liste chaînée sans perdre la chaîne.
  • Parcours d'arbre : Maîtriser les parcours préfixe, infixe et postfixe.
  • Analyse de complexité : Évaluer le temps d'exécution en notation $O(n)$.

Exemples corrigés

  • Pile : Pour inverser une chaîne, on empile chaque caractère puis on dépile.
  • Liste : Pour insérer en tête, on crée un nouveau nœud dont le pointeur suivant pointe vers l'ancienne tête.

Erreurs fréquentes

  • Oublier de mettre à jour le pointeur null à la fin d'une liste.
  • Confondre la racine d'un arbre avec une feuille.
  • Ne pas gérer le cas de la pile vide lors d'un pop.

🌉 Jisr : les mots du chapitre FR ⇄ AR

Tu as appris les sciences en arabe ? Touche un mot pour voir sa traduction et une explication en darija.

La question que tu n'oses pas poser en classe ? Pose-la à UstadZéro jugement, même en darija, même à minuit. Il t'explique pas à pas et corrige ta démarche. Gratuit.

Défi flash : 4 questions

Sans compte

🎯 Structures de données avancées

1/4

Quelle structure de données est la plus adaptée pour gérer un historique de navigation (bouton retour) ?

❓ Questions fréquentes

C'est quoi la différence entre une pile et une file ?
  1. La pile suit le principe LIFO (Last In, First Out) : le dernier élément ajouté est le premier à sortir.
  2. La file suit le principe FIFO (First In, First Out) : le premier élément ajouté est le premier à sortir.

💡 À retenir : Pile = assiettes empilées ; File = file d'attente à la caisse.

kifach n-calculer la complexité d'une boucle imbriquée ?
  1. Si tu as une boucle de $n$ itérations contenant une autre boucle de $n$ itérations, la complexité est $O(n \times n) = O(n^2)$.
  2. Si les boucles sont successives, on additionne : $O(n + n) = O(n)$.

💡 À retenir : Les boucles imbriquées multiplient la complexité, les boucles successives l'additionnent.

Est-ce qu'on peut utiliser une liste chaînée pour implémenter une pile ?

Oui, tout à fait. Il suffit d'insérer et de supprimer toujours au niveau de la tête de la liste. Cela garantit une complexité en $O(1)$ pour les deux opérations.

💡 À retenir : La liste chaînée est une structure flexible pour simuler d'autres structures.

chno hiya l'utilité dyal l'arbre binaire de recherche (ABR) ?

L'ABR permet de chercher, insérer ou supprimer un élément très rapidement. En moyenne, la complexité est de $O(\log n)$ au lieu de $O(n)$ pour une liste simple.

💡 À retenir : L'ABR est idéal pour les recherches rapides.

Comment savoir si une pile est pleine ?

Dans une implémentation par tableau, on vérifie si l'indice du sommet est égal à taille_max - 1. Si c'est une liste chaînée, elle est rarement "pleine" sauf si la mémoire vive est saturée.

💡 À retenir : La condition de débordement dépend de la structure sous-jacente.

kifach n-parcourir un arbre binaire en infixe ?
  1. Parcourir le sous-arbre gauche.
  2. Traiter le nœud racine.
  3. Parcourir le sous-arbre droit.

💡 À retenir : Infixe = Gauche -> Racine -> Droite.

Pourquoi on utilise des pointeurs dans les listes chaînées ?

Les pointeurs permettent de lier les éléments entre eux sans avoir besoin d'un espace mémoire contigu, contrairement aux tableaux. Cela facilite l'insertion et la suppression.

💡 À retenir : Les pointeurs offrent une gestion dynamique de la mémoire.

C'est quoi un nœud "feuille" dans un arbre ?

Un nœud feuille est un nœud qui n'a aucun enfant (ni à gauche, ni à droite).

💡 À retenir : Une feuille est la terminaison d'une branche.

Est-ce que la récursivité est toujours meilleure qu'une boucle ?

Non. La récursivité est élégante mais peut causer un "stack overflow" (débordement de pile) si la profondeur est trop grande. Une boucle est souvent plus performante en mémoire.

💡 À retenir : Utilisez la récursivité pour la lisibilité, les boucles pour la performance.

Comment supprimer un nœud dans une liste chaînée ?
  1. Trouver le nœud précédent celui à supprimer.
  2. Faire pointer le suivant du précédent vers le suivant du nœud à supprimer.
  3. Libérer la mémoire du nœud supprimé.

💡 À retenir : Il faut toujours garder une référence sur le nœud précédent.

C'est quoi la complexité d'un accès par index dans une liste chaînée ?

C'est $O(n)$ car il faut parcourir la liste nœud par nœud depuis le début pour atteindre l'index souhaité.

💡 À retenir : Contrairement au tableau, l'accès direct n'existe pas en liste chaînée.

Pourquoi dit-on que la file est FIFO ?

Parce que le premier élément qui entre dans la file est le premier à être traité, comme dans une file d'attente réelle.

💡 À retenir : FIFO = First In, First Out.

✍️ Exercices type examen national

Exercice 1

Soit une liste chaînée simple contenant les entiers : 10 -> 20 -> 30. Écrire l'algorithme permettant d'insérer la valeur 25 après le nœud contenant 20.

Voir la correction détaillée : inscription gratuite

Exercice 2

Donner le parcours infixe de l'arbre binaire suivant : Racine (A), Fils gauche (B), Fils droit (C). B a un fils gauche (D).

Voir la correction détaillée : inscription gratuite

Exercice 3

Évaluer la complexité de l'algorithme suivant : Pour i de 1 à n : Pour j de 1 à n : Afficher(i, j) Fin Pour Fin Pour Pour k de 1 à n : Afficher(k) Fin Pour

Voir la correction détaillée : inscription gratuite

Un prof de Informatique pour aller plus loin

Les cours du soir avec des profs vérifiés arrivent : inscris-toi pour être prévenu(e) en premier.

Être prévenu(e) gratuitement

Autres chapitres de Informatique