Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

TP7 ALGO4 : TABLE HACHAGE AVEC LISTE CHAINEE

#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;
}

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.