QCM : Structures de données linéaires (18 questions)

Questions et réponses du QCM

1. Que décrit un type abstrait de données ?

Un ensemble de routines associé à un langage, sans préciser les propriétés des opérations
Des données indépendamment de leur implémentation, avec une notation, des opérations et leurs propriétés
Une collection de valeurs accompagnée d’un algorithme imposé pour chaque opération
Une organisation physique des données en mémoire, avec ses adresses et ses contraintes matérielles

Des données indépendamment de leur implémentation, avec une notation, des opérations et leurs propriétés

Explication

Un type abstrait définit les données et leurs opérations sans imposer leur implémentation, tout en précisant les propriétés de ces opérations. Une organisation physique en mémoire décrit plutôt une implémentation concrète.

2. Dans une structure de données, que désigne son interface ?

La disposition en mémoire des données et les liens matériels entre leurs emplacements
La notation formelle des données, sans les opérations permettant de les manipuler
L’ensemble des routines qui permettent d’ajouter, d’effacer et d’accéder aux données
L’ensemble des règles qui déterminent la quantité de mémoire réservée aux données

L’ensemble des routines qui permettent d’ajouter, d’effacer et d’accéder aux données

Explication

L’interface regroupe les routines permettant d’ajouter, d’effacer et d’accéder aux données. La disposition en mémoire relève de l’implémentation, et non de l’interface.

3. À quelle opération CRUD correspond la suppression d’une donnée ?

Read
Delete
Update
Create

Delete

Explication

Dans CRUD, Delete désigne la suppression d’une donnée. Update correspond à sa modification, tandis que Read sert à la lire.

4. Quelle caractéristique définit une liste comme structure de données ?

Elle stocke des éléments ordonnés dans des cellules contiguës auxquelles l’accès est toujours direct
Elle organise des éléments sans indice, chacun étant accessible par un lien depuis une racine
Elle regroupe des éléments ordonnés, repérés par un indice, auxquels l’accès est séquentiel
Elle regroupe des éléments non ordonnés, repérés par leur valeur, auxquels l’accès est direct

Elle regroupe des éléments ordonnés, repérés par un indice, auxquels l’accès est séquentiel

Explication

Une liste regroupe des éléments ordonnés, repérés par un indice, avec un accès séquentiel. Le stockage contigu et l’accès direct caractérisent une représentation particulière, pas la définition générale d’une liste.

5. Quelle distinction faut-il faire entre le type abstrait liste et une liste Python ?

Le type abstrait décrit une structure chaînée, tandis qu’une liste Python est un tableau de taille fixe
Le type abstrait définit un langage de programmation, tandis qu’une liste Python désigne une interface de routines
Le type abstrait décrit une structure, tandis qu’une liste Python est un tableau dynamique
Le type abstrait désigne un tableau dynamique, tandis qu’une liste Python est une structure indépendante de son implémentation

Le type abstrait décrit une structure, tandis qu’une liste Python est un tableau dynamique

Explication

Le type abstrait liste décrit une structure de données sans imposer sa représentation, alors que les listes Python sont des tableaux dynamiques. Les confondre revient à attribuer au type abstrait une implémentation particulière.

6. Une liste contient 6 éléments : quels indices sont valides pour lire un élément ?

Les indices entiers de 0 à 5 inclus
Les indices entiers de 0 à 6 inclus
Les indices entiers de 1 à 5 inclus
Les indices entiers de 1 à 6 inclus

Les indices entiers de 0 à 5 inclus

Explication

La lecture à l’indice ii est définie lorsque 0≤i<longueur⁡(liste)0 \leq i < \operatorname{longueur}(liste) ; pour une longueur de 6, les indices vont donc de 0 à 5. L’indice 6 est accepté pour une insertion, mais pas pour une lecture.

7. Une liste contient 6 éléments : quel indice peut servir à insérer un élément juste après le dernier ?

L’indice -1
L’indice 6
L’indice 7
L’indice 8

L’indice 6

Explication

L’insertion est définie lorsque 0≤i≤longueur⁡(liste)0 \leq i \leq \operatorname{longueur}(liste), donc l’indice 6 est valide pour une liste de longueur 6. Contrairement à l’insertion, la lecture à cet indice n’est pas définie.

8. Pour une implémentation d’une liste par tableau, quelle combinaison de coûts est attendue ?

Accès et insertions en temps constant, suppressions en temps linéaire
Accès et suppressions en temps linéaire, insertions en temps constant
Accès en temps constant, insertions et suppressions en temps linéaire
Accès en temps linéaire, insertions et suppressions en temps constant

Accès en temps constant, insertions et suppressions en temps linéaire

Explication

Dans une implémentation par tableau, l’accès à une valeur prend un temps constant, alors que les insertions et suppressions prennent un temps linéaire. Le temps constant pour ces modifications est plutôt associé à une liste chaînée.

9. Quelle description correspond à une liste chaînée ?

Des éléments dispersés sans ordre, dont les cellules sont repérées par un indice et accessibles directement
Des éléments rangés linéairement et contigus en mémoire, dont chaque cellule contient uniquement une valeur
Des éléments rangés linéairement, pas nécessairement contigus en mémoire, dont les cellules portent des informations et des liens
Des valeurs de même type placées dans un espace contigu, sans liens entre les emplacements

Des éléments rangés linéairement, pas nécessairement contigus en mémoire, dont les cellules portent des informations et des liens

Explication

Une liste chaînée est organisée linéairement, sans exiger que ses éléments soient contigus en mémoire, et ses cellules contiennent des informations et des liens. La contiguïté des valeurs de même type décrit plutôt un tableau.

10. Dans une liste chaînée, quels coûts caractérisent l’accès à une valeur et les opérations d’insertion et de suppression ?

Accès et suppression en temps linéaire, insertion en temps constant
Accès en temps linéaire, insertion et suppression en temps constant
Accès en temps constant, insertion et suppression en temps linéaire
Accès et insertion en temps constant, suppression en temps linéaire

Accès en temps linéaire, insertion et suppression en temps constant

Explication

L’accès à une valeur dans une liste chaînée prend un temps linéaire, tandis que l’insertion et la suppression prennent un temps constant. Les coûts d’accès constant et de modification linéaire correspondent plutôt à l’implémentation par tableau.

11. Quel principe décrit l’ordre d’accès aux éléments d’une pile ?

Les éléments sont retirés selon leur position dans une séquence triée.
Les éléments sont retirés selon l’ordre alphabétique de leur valeur.
Le premier élément ajouté est le premier à être retiré.
Le dernier élément ajouté est le premier à être retiré.

Le dernier élément ajouté est le premier à être retiré.

Explication

Une pile suit le principe LIFO : le dernier élément empilé est celui qui est accessible en premier. Le principe FIFO décrit plutôt l’ordre d’accès d’une file.

12. Dans quelles conditions peut-on empiler ou dépiler un élément ?

On empile et on dépile si la pile n’est pas vide.
On empile si la pile n’est pas pleine et on dépile si elle n’est pas vide.
On empile et on dépile si la pile n’est pas pleine.
On empile si la pile n’est pas vide et on dépile si elle n’est pas pleine.

On empile si la pile n’est pas pleine et on dépile si elle n’est pas vide.

Explication

Empiler ajoute un élément au sommet et requiert une pile non pleine, tandis que dépiler retire l’élément du sommet et requiert une pile non vide. Confondre ces conditions revient à inverser les prérequis des deux opérations.

13. Une file reçoit successivement les éléments A, puis B, puis C. Quel élément est prioritaire pour le retrait ?

L’élément dont la valeur est la plus petite.
B, car la file retire d’abord l’élément ajouté en deuxième.
A, car une file suit le principe FIFO.
C, car une file suit le principe LIFO.

A, car une file suit le principe FIFO.

Explication

Une file suit le principe FIFO : le premier élément ajouté est le premier à être retiré, donc A est prioritaire. C serait prioritaire dans une structure LIFO telle qu’une pile.

14. Quelle condition permet de défiler un élément d’une file ?

La file doit être vide afin de libérer une place.
La file doit contenir un élément qui vient d’être ajouté en queue.
La file doit avoir atteint sa capacité maximale.
La file doit contenir au moins un élément.

La file doit contenir au moins un élément.

Explication

Défiler retire et retourne l’élément en tête, ce qui exige que la file ne soit pas vide. Une file non pleine est la condition requise pour enfiler un nouvel élément.

15. Comment les données sont-elles organisées dans un dictionnaire ?

En groupes de valeurs, leur ordre d’insertion permettant de les distinguer.
En valeurs triées, leur rang permettant de retrouver leur clé.
En couples clé-valeur, la clé permettant d’accéder à la valeur associée.
En éléments numérotés, leur position permettant d’accéder à leur valeur.

En couples clé-valeur, la clé permettant d’accéder à la valeur associée.

Explication

Un dictionnaire contient des entrées formées de couples clé-valeur, et la clé sert à accéder à la valeur associée. L’accès par position correspond plutôt à l’organisation d’une liste.

16. Quelle distinction caractérise un dictionnaire par rapport à une liste ?

Un dictionnaire n’a pas d’ordre et l’accès à une valeur se fait par sa clé.
Un dictionnaire trie ses valeurs et l’accès se fait par leur position.
Un dictionnaire conserve un ordre et l’accès à une valeur se fait par son rang.
Un dictionnaire associe chaque valeur à une place fixe dans une séquence.

Un dictionnaire n’a pas d’ordre et l’accès à une valeur se fait par sa clé.

Explication

Contrairement à une liste, un dictionnaire ne comporte pas d’ordre et l’accès à une valeur se fait par clé. L’accès par rang ou position décrit une organisation séquentielle plutôt que l’accès propre aux dictionnaires.

17. Quel rôle jouent les tables et les fonctions de hachage dans l’accès aux valeurs d’un dictionnaire ?

Elles transforment chaque valeur en une position numérotée dans une liste.
Elles permettent d’accéder aux valeurs en temps constant.
Elles maintiennent les clés dans l’ordre alphabétique pour accélérer les lectures.
Elles vérifient les clés en parcourant toutes les entrées une à une.

Elles permettent d’accéder aux valeurs en temps constant.

Explication

Les tables de hachage et les fonctions de hachage permettent l’accès aux valeurs d’un dictionnaire en temps constant. Un parcours séquentiel de toutes les entrées ne correspond pas à ce mécanisme d’accès.

18. Pour une clé donnée, quand la lecture de sa valeur ou la suppression de son entrée est-elle définie ?

Lorsque la clé apparaît en première position dans un ordre de rangement.
Lorsque le dictionnaire ne contient aucune autre entrée.
Lorsque la clé est absente, afin de créer implicitement une entrée.
Lorsque la recherche dans le dictionnaire confirme que la clé existe.

Lorsque la recherche dans le dictionnaire confirme que la clé existe.

Explication

La lecture d’une valeur et la suppression de son entrée sont définies si la recherche confirme que la clé existe. La recherche vérifie cette existence, mais l’absence de la clé ne suffit pas à autoriser la lecture ou la suppression.

Révisez avec les flashcards

Mémorisez les réponses avec 38 flashcards sur Structures de données linéaires.

Que décrit un type abstrait de données, indépendamment de son implémentation ?

Des données, leur notation, leurs opérations et les propriétés de ces opérations.

Quelles routines composent l’interface d’une structure de données ?

Les routines d’ajout, d’effacement et d’accès aux données.

Que signifie « Create » dans les opérations CRUD ?

Ajouter une donnée.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Structures de données linéaires.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM