#include <stdio.h>
#include <stdlib.h>
struct HashNode {
int key;
int value;
};
const int capacity = 20;
int size = 0;
struct HashNode** arr;
struct HashNode* dummy;
void insert(int key, int V)
{
struct HashNode* temp
= (struct HashNode*)malloc(sizeof(struct HashNode));
temp->key = key;
temp->value = V;
int hashIndex = key % capacity;
while (arr[hashIndex] != NULL
&& arr[hashIndex]->key != key
&& arr[hashIndex]->key != -1) {
hashIndex++;
hashIndex %= capacity;
}
if (arr[hashIndex] == NULL
|| arr[hashIndex]->key == -1)
size++;
arr[hashIndex] = temp;
}
int delete (int key)
{
int hashIndex = key % capacity;
while (arr[hashIndex] != NULL) {
if (arr[hashIndex]->key == key) {
arr[hashIndex] = dummy;
size--;
return 1;
}
hashIndex++;
hashIndex %= capacity;
}
return 0;
}
int find(int key)
{
int hashIndex = (key % capacity);
int counter = 0;
while (arr[hashIndex] != NULL) {
int counter = 0;
if (counter++ > capacity)
break;
if (arr[hashIndex]->key == key)
return arr[hashIndex]->value;
hashIndex++;
hashIndex %= capacity;
}
return -1;
}
int main()
{
arr = (struct HashNode**)malloc(sizeof(struct HashNode*)
* capacity);
for (int i = 0; i < capacity; i++)
arr[i] = NULL;
dummy
= (struct HashNode*)malloc(sizeof(struct HashNode));
dummy->key = -1;
dummy->value = -1;
insert(1, 5);
insert(2, 15);
insert(3, 20);
insert(4, 7);
if (find(4) != -1)
printf("Value of Key 4 = %d\n", find(4));
else
printf("Key 4 does not exists\n");
if (delete (4))
printf("Node value of key 4 is deleted "
"successfully\n");
else {
printf("Key does not exists\n");
}
if (find(4) != -1)
printf("Value of Key 4 = %d\n", find(4));
else
printf("Key 4 does not exists\n");
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment