Hashing in C++  pseudo code

Hai Teman-teman,disini saya akan sharing sedikit tentang contoh program dari hashing in c++,
ini dia teman-teman codingannya:
Hashing In C++
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
typedef struct node
         { int data;
           struct node *next;
           } *list;
typedef struct node larik[101];
int s=0;
void BuatDataBeda(int x[101],int &n)
{ int i,j;bool ada;
  cout<<"banyak data : ";cin>>n;
  srand(time(NULL));
  for (i=1;i<=n;i++) {
    do {  
        x[i]=rand()%100+1;
        j=i-1;ada=false;
        while (j>=1){
           if (x[i]==x[j]) {
              ada=true;j=0;
           } else j--;
         }
     } while (ada);
     cout<<x[i]<<" ";
  }
}   
long prima(int N)
{long p;
 bool prima;
 do {
  if ((N==2)||(N==3)) prima=true;
  else if ((N%2==0)||(N<2)) prima=false;
       else
       { p=3;prima=true;
                      do {
                         if ((N%p)==0)  prima=false; else p=p+2;
                        }
                      while ( prima && p<=(sqrt(N)+1));
       }
   if (!prima) N++;   
 } while (!prima);
 return N;
}
void hashing(int X[101],int N,larik H)
{ int IH,I,p,t;list Q,b;
  p=prima(N);
  for(int i=1;i<=p;i++) {
    H[i].data=0;H[i].next=NULL;
  }
  for(int i=1;i<=N;i++) {
      IH = X[i]%p+1;
      if (H[IH].data==0) H[IH].data=X[i];
      else {
        b=new node;b->data=X[i];b->next=NULL;
        if (H[IH].next==NULL) H[IH].next=b;
        else {
           Q=H[IH].next;
           while (Q->next!=NULL) Q=Q->next;
           Q->next=b;
        }         
      }
   }
   cout<<endl;
   for (int I=1;I<=p;I++) {
     cout<<I<<"  "<<H[I].data<<" ";
     if (H[I].data!=0) s++;
     if(H[I].next!=NULL) {
       Q=H[I].next;t=2;
       while(Q!=NULL) {s+=t;t++;
         cout<<Q->data<<" "; Q=Q->next;
         }  
     }
     cout<<endl;
  }
}
void cari(larik H,int N)
{int lokasi,a,i,p,k=1;list q;bool ada;
  cout<<"\nmasukkan data yg dicari : ";cin>>a;
   p=prima(N);
   i=a % p+1;ada=false;
   if ((H[i].data==a) && (a!=0)) {ada=true;lokasi=i;}
   else
     if (H[i].next!=NULL) {
       q=H[i].next;ada=false;
       while (q!=NULL &&  !ada) {
        if (q->data==a) {ada=true;lokasi=i;k++;} else {q=q->next;k++;}
        }
     } else  ada=false;
   if (ada) cout<<"data ada di "<<lokasi<<" ke "<<k;
   else cout<<"data tidak ada";
}
   
main()
{ int x[101],n;larik H;
  BuatDataBeda(x,n);
  cout<<endl;
  hashing(x,n,H);
  cout<<endl;
  cout<<"rata-rata : "<<(float)s/n;
  cari(H,n);
  getch();
}
Author image
About the Author :

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum.

Connect with him on :