Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
#define TAILLE_NOM 20
#define TAILLE_TABLE 20
#define TAILLE_PRENOM 20
 
struct personne{
    struct personne *succ;
    char nom[TAILLE_NOM];
    char prenom[TAILLE_PRENOM];
    struct personne *pred;
};
typedef struct personne personne_t;
 
 
/* --- variable globales --- */
personne_t *table_hachage[TAILLE_TABLE];
 
 
/* --- fonction hachage --- */
int code_hachage(char clef[])
{
    int tmp, i, res=0, taille;
    taille = strlen(clef);
 
    for(i=0; i<taille; i++)
    {
        res = (res<<4) + clef[i];
 
        if(tmp = (res & 0xf0000000))
        {
            res = res ^ (tmp>>24);
            res = res ^ tmp;
        }
    }
    return res % TAILLE_TABLE;
}
 
 
/* --- suppression d'un element dans la table --- */
void suppression_element(personne_t *element_a_supprimer)
{
    int code;
    personne_t *pt_succ, *pt_pred;
 
    pt_succ = element_a_supprimer->succ;
    pt_pred = element_a_supprimer->pred;
 
    if(pt_succ != NULL) /* il y a un successeur dans la liste */
    {
        pt_succ->pred = pt_pred;
    }
 
    if(pt_pred != NULL) /* il y a un predecesseur dans la liste */
    {
        pt_pred->succ = pt_succ;
    }
 
    else /* c'est le premier de la liste */
    {
        code = code_hachage(element_a_supprimer->nom);
        table_hachage[ code] = pt_succ;
    }
 
    free(element_a_supprimer);}
Bonjour je ne comprend pas tres bien la fonction suppression j'aimerais avoir quelque explication la dessus.
merci encore.