Advertisement
namereq

ハッシュ

Jul 16th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.86 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. #define NMAX 1000
  4.  
  5. /*---ハッシュ関数(keyのハッシュ値を返す)---*/
  6. static int hash(int a[], int key)
  7. {
  8.     int idx = 0;
  9.     if(a[key%12] == 0){
  10.         idx = key%12;
  11.     } else if(a[(key+1)%12]==0){
  12.         idx = (key+1)%12;
  13.     } else if(a[(key+4)%12]==0){
  14.         idx = (key+4)%12;
  15.     }
  16.     return idx;
  17. }
  18. /*---ハッシュ表を初期化---*/
  19. void Initialize(int a[], int size) {
  20.     int i;
  21.  
  22.     for (i = 0; i < size; i ++) {
  23.         a[i] = 0;
  24.     }
  25. }
  26. /*---データの追加---*/
  27. void Add(int a[], int k){
  28.     a[hash(a,k)] = k;
  29. }
  30. /*---ハッシュ表をダンプ---*/
  31. void Dump(int a[], int size)
  32. {
  33.     int i;
  34.    
  35.     for (i = 0; i < size; i ++) {
  36.         printf(" a[%2d]: %d\n", i, a[i]);
  37.     }
  38. }
  39. /*---メイン---*/
  40. int main(void)
  41. {
  42.     int a[NMAX];
  43.     Initialize(a, 12);
  44.    
  45.     Add(a, 32);
  46.     Add(a, 17);
  47.     Add(a, 41);
  48.     Add(a, 66);
  49.     Add(a, 79);
  50.    
  51.     Dump(a, 12);
  52.    
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement