Advertisement
Bewin

Hashing

Feb 4th, 2024
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct node{
  5.     int data;
  6.     struct node* next;
  7. };
  8. struct node* newNode(int item){
  9.     struct node* newnode;
  10.     newnode = (struct node*)malloc(sizeof(struct node));
  11.     newnode->data=item;
  12.     newnode->next=NULL;
  13.     return newnode;
  14. }
  15. void insertAtEnd(struct node* head,int item){
  16.     struct node* newnode;
  17.     newnode = (struct node*)malloc(sizeof(struct node));
  18.     newnode->data=item;
  19.     newnode->next=NULL;
  20.     if(head!=NULL){
  21.         struct node* temp=head;
  22.         while(temp->next!=NULL){
  23.             temp=temp->next;
  24.         }
  25.         temp->next=newnode;
  26.     }
  27. }
  28. void display(struct node* head){
  29.     if(head==NULL){
  30.         return;
  31.     }
  32.     struct node* current=head;
  33.     while(current->next!=NULL){
  34.         printf("%d, ",current->data);
  35.         current=current->next;
  36.     }
  37.     printf("%d",current->data);
  38. }
  39. void closedHashing(){
  40.     int hashTable[10];
  41.     int index,ele,count,arg;
  42.     arg=1;
  43.     for(int i=0;i<10;i++){
  44.         hashTable[i]=-1;
  45.     }
  46.     while(arg==1){
  47.         printf("Enter element to be inserted:");
  48.         scanf("%d",&ele);
  49.         index = ele%10;
  50.         if(hashTable[index]==-1)
  51.             hashTable[index]=ele;
  52.         else{
  53.             count=0;
  54.             while(count < 9){
  55.                 if(index==9)
  56.                     index=-1;
  57.                 if(hashTable[++index]==-1){
  58.                     hashTable[index]=ele;
  59.                     break;
  60.                 }
  61.                 else{
  62.                     count++;
  63.                 }
  64.             }
  65.             if(count>=9)
  66.                 printf("\nNo space in table\n");
  67.         }
  68.         printf("\nHash Table\n");
  69.         for(int i=0;i<10;i++){
  70.             if(hashTable[i]==-1){
  71.                 printf("%d\t-\n",i);
  72.             }
  73.             else
  74.                 printf("%d\t%d\n",i,hashTable[i]);
  75.         }
  76.         printf("Do you want to continue the process:'1' for yes and '0' for no.\n");
  77.         scanf("%d",&arg);
  78.     }
  79. }
  80. void openHashing(){
  81.     struct node* hashTable[10];
  82.     int index,ele,arg;
  83.     arg=1;
  84.     for(int i=0;i<10;i++){
  85.         hashTable[i]=NULL;
  86.     }
  87.     while(arg==1){
  88.         printf("Enter element to be inserted:");
  89.         scanf("%d",&ele);
  90.         index = ele%10;
  91.         if(hashTable[index]==NULL)
  92.             hashTable[index]=newNode(ele);
  93.         else{
  94.             insertAtEnd(hashTable[index],ele);
  95.         }
  96.         printf("\nHash Table\n");
  97.         for(int i=0;i<10;i++){
  98.             if(hashTable[i]==NULL){
  99.                 printf("%d\t-\n",i);
  100.             }
  101.             else{
  102.                 printf("%d\t",i);
  103.                 display(hashTable[i]);
  104.                 printf("\n");
  105.             }
  106.         }
  107.         printf("Do you want to continue the process:'1' for yes and '0' for no.\n");
  108.         scanf("%d",&arg);
  109.     }
  110. }
  111. int main(){
  112.     int ch;
  113.     while(1){
  114.         printf("*******");
  115.         printf("\n1. Closed Hashing\n2. Open Hashing\n0. Exit\n");
  116.         printf("*******\n");
  117.         scanf("%d",&ch);
  118.         switch(ch){
  119.             case 1:
  120.                 closedHashing();
  121.                 break;
  122.             case 2:
  123.                 openHashing();
  124.                 break;
  125.             case 0:
  126.                 exit(0);
  127.             default:
  128.                 printf("Invalid argument!");
  129.         }
  130.     }
  131.  
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement