#include <stdio.h> #include <stdlib.h> //EXERCICE1 struct Liste_chainee_de_nombre { int nombre; struct Liste_chainee_de_nombre *suivant; }; typedef struct Liste_chainee_de_nombre Liste_chainee_de_nombre; int fonction_hachage_division(int taille_tableau, int k) { return (k%taille_tableau); } int fonction_hachage_multiplication(int taille_tableau, int k) { float a=0.618034; float nombre=k*a; int dessus=nombre; float decimale=nombre-dessus; int resultat=taille_tableau*decimale; return resultat; } void inserer_nombre_liste_chainee(Liste_chainee_de_nombre *l, int nombre) { if (l->suivant==NULL) { Liste_chainee_de_nombre *lc=malloc(sizeof(struct Liste_chainee_de_nombre)); lc->nombre=nombre; lc->suivant=NULL; l->suivant=lc; } else { inserer_nombre_liste_chainee(l->suivant,nombre); } } int inserer_nombre_table_de_hachage_division(Liste_chainee_de_nombre **liste, int taille_tableau, int nombre) { int indice=fonction_hachage_division(taille_tableau, nombre); if (liste[indice]==NULL) { Liste_chainee_de_nombre *lc=malloc(sizeof(struct Liste_chainee_de_nombre)); lc->nombre=nombre; lc->suivant=NULL; liste[indice]=lc; return 0; } else { inserer_nombre_liste_chainee(liste[indice], nombre); return 1; } } int inserer_nombre_table_de_hachage_multiplication(Liste_chainee_de_nombre **liste, int taille_tableau, int nombre) { int indice=fonction_hachage_multiplication(taille_tableau, nombre); if (liste[indice]==NULL) { Liste_chainee_de_nombre *lc=malloc(sizeof(struct Liste_chainee_de_nombre)); lc->nombre=nombre; lc->suivant=NULL; liste[indice]=lc; return 0; } else { inserer_nombre_liste_chainee(liste[indice], nombre); return 1; } } void initialisation(Liste_chainee_de_nombre **liste) { int i; for(i=0;i<9;i++) { liste[i]=NULL; } //EXERCICE2 void initialisation_tableau(int *tab) { int i; for(i=0;i<9;i++) { tab[i]=0; } } int fonction_hachage_sonde(int taille_tableau, int valeur) { return 1; } void insertion_tableau(int *tab, int valeur) { } int main() { //EXERCICE1 Liste_chainee_de_nombre c; c.nombre=1; Liste_chainee_de_nombre *g; g=malloc(sizeof(struct Liste_chainee_de_nombre)); g->nombre=2; c.suivant=g; int fonction_hachage_division(int k, int taille_tableau); int fonction_hachage_multiplication(int k, int taille_tableau); int inserer_nombre_table_de_hachage_division(Liste_chainee_de_nombre **liste, int taille_tableau, int nombre); int inserer_nombre_table_de_hachage_multiplication(Liste_chainee_de_nombre **liste, int taille_tableau, int nombre); void initialisation(Liste_chainee_de_nombre **liste); Liste_chainee_de_nombre *table_de_hachage[9]; initialisation(table_de_hachage); Liste_chainee_de_nombre *table_de_hachage1[9]; initialisation(table_de_hachage1); int nombre_collision=0; nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 5); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 28); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 19); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 15); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 20); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 33); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 12); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 17); nombre_collision+=inserer_nombre_table_de_hachage_division(table_de_hachage, 9, 10); printf("\nNombre collision methode division : %d",nombre_collision); nombre_collision=0; nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 5); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 28); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 19); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 15); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 20); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 33); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 12); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 17); nombre_collision+=inserer_nombre_table_de_hachage_multiplication(table_de_hachage, 9, 10); printf("\nNombre collision methode multiplication : %d\n",nombre_collision); printf("Division : %d\n", fonction_hachage_division(5,5)); printf("Multiplication : %d",fonction_hachage_multiplication(14,15)); //EXERCICE 2 int tab[9]; int fonction_hachage_sonde(int taille_tableau, int valeur); void initialisation_tableau(int *tab); initialisation_tableau(tab); int indice=fonction_hachage_sonde(9,5); return 0; }
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more