Choisir une structure pour des données sous forme clé-valeur

Problème

Vous avez une série de données sous forme clé-valeur et vous souhaitez connaître les structures de données les plus appropriées pour effectuer le bon choix.

Solution

Vous pouvez choisir entre les structures suivantes :

  • liste de structures (la clé est un élément de la structure) ;

  • table de hachage ;

  • arbre binaire balancé.

Discussion

Liste de structures

L’utilisation de deux tableaux dont les index correspondent ne fait pas partie des solutions. Préférez plutôt un tableau de structures qui facilite l’écriture du code et revient à peu près au même au niveau du programme.

Une liste de structures consiste à implémenter une liste (voir la recette précédente) dont l’élément est composé d’une chaîne de caractères et du reste des données, par exemple :


typedef struct 
{ 
  char *key; 
  int key_int; 
  float value_float; 
  /* ... */ 
} data_t;
 

En utilisant un tableau dynamique, vous pouvez chercher une valeur ainsi :


data_t *tableau; 
int nb_elements; 
int i; 
 
/* Initialisation et remplissage du tableau. */ 
for (i = 0; i < nb_elements; i++) 
  { 
    if (!strcmp (tableau[i].key, "clé") && (tableau[i].key_int == 10)) 
      break; 
  } 
 
if (i < nb_elements) 
  { 
/* Nous...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Choisir une structure pour une liste de données
Suivant
Choisir une structure pour des données sous forme de graphe