2009/CaoCourseTme2: dico.h

File dico.h, 1.9 KB (added by franck, 17 years ago)
Line 
1#ifndef _DICO_H_
2#define _DICO_H_
3
4/********************************************************************
5 structure définissant un item du dictionnaire
6 Un item est formé d'un couple (KEY,COUNT) plus un pointeur NEXT
7 permettant de chainer les items ayant le meme index de hachage.
8 Cette structure a un encombrement variable en mémoire,
9 puisque la longueur de la chaine de caractères KEY est variable.
10*********************************************************************/
11typedef struct dico_item_s
12{
13 struct dico_item_s *NEXT; /* pointeur sur l'item suivant */
14 unsigned int COUNT; /* valeur associée à l'item */
15 char KEY[]; /* tableau flexible contenant la clé */
16} dico_item_t;
17
18/********************************************************************
19 structure définissant un dictionnaire
20*********************************************************************/
21typedef struct dico_root_s
22{
23 unsigned int SIZE; /* nombre de cases du tableau */
24 dico_item_t **HTAB; /* adresse du tableau de pointeurs */
25} dico_root_t;
26
27
28/********************************************************************
29 structure définissant un itérateur permettant de parcourir
30 simplement tous les items d'un dictionnaire.
31*********************************************************************/
32typedef struct dico_iterator_s
33{
34 dico_root_t *ROOT;
35 unsigned INDEX;
36 dico_item_t *ITEM;
37} dico_iterator_t;
38
39/********************************************************************
40 fonctions externes
41********************************************************************/
42
43extern dico_root_t *dico_create(unsigned int size);
44extern dico_item_t *dico_get(dico_root_t *root, char *key);
45extern dico_iterator_t *dico_iterator(dico_root_t *root);
46extern dico_item_t *dico_first(dico_iterator_t *iter);
47extern dico_item_t *dico_next(dico_iterator_t *iter);
48
49#endif