2009/CaoCourseTme2: dico.h

File dico.h, 1.9 KB (added by franck, 14 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