Valeur sentinelle
En informatique, dans une structure de données de taille variable, une des techniques pour dénoter la fin des données est l'utilisation d'une valeur sentinelle. Celle-ci est stockée dans la structure de donnée de la même manière que ses données, ce qui impose que cette valeur ne puisse pas être confondue avec des données valides. L'utilisation d'une valeur sentinelle implique a priori un parcours séquentiel de la structure de données (même si celle-ci est à accès aléatoire).
Exemples
[modifier | modifier le code]Des exemples de valeurs sentinelles communes et leur utilisations:
- Caractère nul pour indiquer la fin d'une chaîne terminée par un caractère nul
- Pointeur nul pour indiquer la fin d'une liste chaînée ou d'un arbre enraciné.
- Un bit le plus significatif défini dans un flux de valeurs de données également espacées, par exemple un 8ème bit défini dans un flux de caractères ASCII 7 bits stockés dans des octets 8 bits indiquant une propriété spéciale (comme la vidéo inverse, le gras ou l'italique) ou le fin du flux
- Un entier négatif pour indiquer la fin d'une séquence d'entiers non négatifs
En C
[modifier | modifier le code]Un exemple très connu de valeur sentinelle est le caractère nul (\0) pour indiquer la fin d'une chaîne de caractères :
int comparaison_de_deux_chaines(const char s[], const char t[]) {
int i = 0;
while (s[i] != '\0' && t[i] != '\0') {
if (s[i] != t[i]) {
break;
} else {
i++;
}
}
return s[i] - t[i];
}
Alternatives
[modifier | modifier le code]Parmi les autres techniques permettant de dénoter la fin des données, il y a l'utilisation d'un nœud sentinel, qui est une variante de la valeur sentinelle, et le stockage dans la structure de données de sa taille.