Advertisement
eduardovp97

ClosedHashing.c

Dec 2nd, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define N 5
  6.  
  7. typedef struct h{
  8.     char cads[N][20];
  9.     int elem;
  10. }THash;
  11.  
  12. int sumaDeLetras(char cad[]);
  13. void crearTabla(THash *hash);
  14. void insertar(THash *hash, char cad[]);
  15. void imprimirHash(THash *hash);
  16.  
  17. int main(){
  18.  
  19.     THash hash;
  20.     crearTabla(&hash);
  21.     //imprimirHash(&hash);
  22.  
  23.     /*
  24.     int i,j;
  25.     for(i=0; i<N; i++){
  26.         strcpy(hash.cads[i],"0");
  27.         printf("%s\n",hash.cads[i]);
  28.     }
  29.     for(i=0; i<N; i++){
  30.         printf("%d: ",i);
  31.         //for(j=0; j<strlen(hash.cads[i]); j++)
  32.         //  printf("%c",hash.cads[i][j]);
  33.         printf("%s\n",hash.cads[i]);
  34.     }
  35.     */
  36.     insertar(&hash,"PERU");
  37.    
  38.     insertar(&hash,"CHILE");
  39.    
  40.     insertar(&hash,"BRASIL");
  41.     insertar(&hash,"ARGENTINA");
  42.     insertar(&hash,"BOLIVIA");
  43.     insertar(&hash,"COLOMBIA");
  44.    
  45.     //printf("%d\n",hash.elem);
  46.     imprimirHash(&hash);
  47.  
  48.     return 0;
  49. }
  50.  
  51. void crearTabla(THash *hash){
  52.     int i,j;
  53.     for(i=0; i<N; i++){
  54.         strcpy(hash->cads[i],"0");
  55.         printf("%s\n",hash->cads[i]);
  56.     }
  57.     hash->elem = 0;
  58.     //for(i=0; i<N; i++)
  59.     //  hash.cads[i][0] = '\0';
  60. }
  61.  
  62. int sumaDeLetras(char cad[]){
  63.     int i,suma = 0;
  64.     char letra;
  65.     for(i=0; i<strlen(cad); i++)
  66.         suma += cad[i] - 'A' + 1;
  67.     return suma;
  68. }
  69.  
  70. void insertar(THash *hash, char cad[]){
  71.     if(hash->elem == N){
  72.         printf("Tabla de hash llena\n");
  73.         return;
  74.     }
  75.     int h = sumaDeLetras(cad) % N;
  76.     while(strcmp(hash->cads[h],"0") != 0 )
  77.         h = (h+1)%N;
  78.     strcpy(hash->cads[h],cad);
  79.     hash->elem++;
  80. }
  81.  
  82. void imprimirHash(THash *hash){
  83.     int i,j;
  84.     for(i=0; i<N; i++){
  85.         printf("%d: ",i);
  86.         //for(j=0; j<strlen(hash.cads[i]); j++)
  87.         //  printf("%c",hash.cads[i][j]);
  88.         printf("%s\n",hash->cads[i]);
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement