Table de hachage - ansi c

Description

Ce code est une implémentation des tables de hachage en C ANSI.

Les types des éléments référencés peuvent être modifiés simplement. Il est de plus possible d?utiliser le code non pas pour faire un tableau associatif (clef => valeur) mais pour traiter des ensembles d?élément (simplement en ajoutant un #define HASH_TABLE_NOENTRY).

Un itérateur est disponible pour parcourir les éléments.

Dernier point : il y a une documentation faite avec Doxygen.

Source / Exemple :


/*#### Je met juste les principaux prototypes, pour donner une idée de la source. ####*/

/* Creation ? destruction */
Hash_table 	hash_table_create (unsigned int(*hash)(const Key_t e1), int(*compare)(const Key_t e1, const Key_t e2));
int 	hash_table_free (Hash_table tab);

/* Utilisation */
char 	hash_table_get (Hash_table tab, Key_t k, Value_t *v);
char 	hash_table_replace (Hash_table tab, Key_t k, Value_t v);
char 	hash_table_add (Hash_table tab, Key_t k, Value_t v);
char 	hash_table_remove (Hash_table tab, Key_t k, Value_t *v);

/* Utilisation si  HASH_TABLE_NOENTRY définit */
char 	hash_table_get (Hash_table tab, Key_t k);
char 	hash_table_add (Hash_table tab, Key_t k);
char 	hash_table_remove (Hash_table tab, Key_t k);

/* nombre d?éléments */
int 	hash_table_count (Hash_table tab);

/******* iterateur à la JAVA *******/
Hash_table_it it = hash_table_it_create( tab );
while( hash_table_it_hasNext( it ) ) {
     hash_table_entry *elt = hash_table_it_next( it );
     traiter( elt );               // utilisation
}
hash_table_it_free( it );          // désallocation

Conclusion :


Je n?ai pas eu l?impression qu?il existe beaucoup de sources de structures de données en C ANSI sur le net, ce qui m?a poussé à en faire une (que j?espère) correcte.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.