I Listes triés simplement chaînées ---------------------------------- Q1 [1pt] Très peu d'erreurs. Il faut mettre le pointeur du dernier maillon à `NULL`. Q2 [1pt] Il faut bien lire l'énoncé, qui était absolument clair ici. Il indiquait très explicitement les hypothèses et préconditions. Certains programmes proposés sont bien plus complexes que nécessaire. Peu d'erreurs cependant. Q3 [1pt] Les tests doivent être indépendants. Il fallait couvrir au moins les deux sorties possibles, mais c'était mieux de compléter par des types d'entrées possibles. Quelques (rares) élèves perdent bêtement des points en bâclant la question. Q4 [1pt] Aucun problème. Q5 [1pt] Certains effectuent le test de vérification du doublon *après* l'allocation pour un nouveau maillon ce qui n'est pas acceptable (qui va le libérer ?). Q6 [1.5pt] Très peu d'erreurs. Il fallait réutiliser la fonction `localise` ou du moins ne pas parcourir *toute* la liste. Pratiquement personne n'oublie le `free`. Q7 [1pt] C'est la première question de complexité du sujet et il faut justifier, même très brièvement, ce qui est facile ici. Q8 [1pt] Très peu d'élèves mentionnent la zone de données statiques. Personne ne se rend compte que que la valeur existe dans les trois zones mémoire. Q9 [1.5pt] Il n'est pas normal que la moitié des élèves ne sachent pas définir correctement un arbre binaire de recherche. Il ne suffit pas de comparer la valeur d'un nœud avec celle de ses deux fils (faire un contre-exemple !). Les arbres complets/parfaits sont certes équilibrés mais ne permettent pas des opérations logarithmiques en préservant la structure ! Q10 [2pt] Il fallait insérer dans l'ordre décroissant pour avoir une complexité linéaire (ou le faire à la main mais alors il fallait l'indiquer précisément). Il faut justifier a minima par une ligne les complexités. Q11 [2pt] Il convenait ici de rédiger avec soin et rigeur, de faire attention aux indices et aux cas particuliers. Q12 [2pt] Même si c'est classique, il faut a minima une petite phrase d'explication et bien indiquer ce que vous avez modifié. Inutile de recopier *tout* le programme mais recopier ce qui est nécessaire pour mettre en valeurs vos modifications. Q13 [1pt] Je ne sais pas trop ce qu'il faut réellement répondre ici. II Listes à enjambement ----------------------- Q14 [0.5pt] Tout le monde a eu les points ! Q15 [1.5pt] Pas de problèmes particuliers, tout le monde maîtrise correctement l'allocation mémoire. Il ne fallait pas oublier d'allouer les tableaux `suivants`. Q16 [1pt] Il ne faut pas oublier de libérer `suivants` mais il faut également faire attention à ne pas libérer plusieurs fois les mêmes maillons ! Beaucoup d'erreurs alors que la fonction demandée était vraiment très simple. Q17 [2pt] Question difficile. Il ne faut pas écrire n'importe quoi non plus. Certains élèves parviennent plus ou moins correctement à établir les résultats demandés. Q18 [1pt] Question pas si difficile mais il faut être relativement précis. Q19 [2pt] L'algorithme n'était pas très clairement expliqué. Il ne fallait pas réinitialiser la hauteur à chaque maillon mais parcourir par niveaux et descendre définitivement de niveau en cas d'échec. Je n'ai pas beaucoup pénalisé si le code proposé était correct. N'oubliez pas d'expliquer votre programme, ici c'était nécessaire. Q20 [2pt] Question très difficile que personne n'a réussi à traiter. Q21 [1pt] Il faut être précis quant à la complexité des opérations sur un ABR et indiquer si on les suppose équilibrés ou non. Il y a eu beaucoup de n'importe quoi dans cette question. III Utilisation concurrente de listes chaînées ---------------------------------------------- Q22 [1pt] Un dessin ou un schéma permettait souvent d'illustrer vos propos de manière bien plus simple pour le correcteur. N'hésitez pas à en faire. Il fallait tout de même être précis dans cette question. Q23 [1pt] Pseudo-code ne veut pas dire gloubiboulga. Question plutôt bien réussie. Q24 [1pt] Le problème a correctement été identifié par pratiquement tout le monde. Attention encore à être bien précis pour être sûr d'avoir tous les points. Q25 [2pt] Il faut justifier la terminaison pas simplement dire que "ça termine", surtout en présence d'interblocages potentiels ! Il convient d'être suffisamment précis lorsque l'on exhibe une trace pour convaincre le correcteur sans doute possible. Q26 [1.5pt] La question est un peu ambiguë mais je considère qu'il fallait tout de même dire quelles valeurs on pouvait obtenir lorsque cela terminait. Attention : "ne jamais terminer" n'est pas le contraire de "toujours terminer". Q27 [2pt] Question un peu délicate mais assez rentable car il suffisait de comprendre et traduire ce qui était proposé par l'énoncé. Q28 [1pt] Plutôt correctement traitée par ceux qui sont arrivés jusque là. Q29 [1pt] Difficile ici d'être réellement rigoureux donc il fallait donner les idées très clairement, mais avec un minimum de justifications tout de même. Q30 [1.5pt] Une seule réponse, pertinente d'ailleurs.