Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Program Exercise (Can be done either in Java or C): Implementing a hash table wi

ID: 3811893 • Letter: P

Question

Program Exercise (Can be done either in Java or C):

Implementing a hash table with insertion, deletion and searching by using the chaining method

*/Sample input: Sequence of random integers "1.in 4.in 6.in 4.del 8.in 10.in 13.in 1.sch 19.in". Once the hash table is full stop your input. Sample output: Two output sets should be displayed with one being before and the other after the operation. Not that output of sch is to be "found" or "not found". Sample output format

0:

1: 1

2:215

3:

4:

...

12:12

If duplicate is inserted please display "duplicate key". */

Please help me with this exercise will rate! Thank you!

Explanation / Answer

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct hash *hashTable = NULL;
int eleCount = 0;
struct node {
int key, age;
char name[100];
struct node *next;
};

struct hash {
struct node *head;
int count;
};

struct node * createNode(int key, char *name, int age) {
struct node *newnode;
newnode = (struct node *) malloc(sizeof(struct node));
newnode->key = key;
newnode->age = age;
strcpy(newnode->name, name);
newnode->next = NULL;
return newnode;
}

void insertToHash(int key, char *name, int age) {
int hashIndex = key % eleCount;
struct node *newnode = createNode(key, name, age);
if (!hashTable[hashIndex].head) {
hashTable[hashIndex].head = newnode;
hashTable[hashIndex].count = 1;
return;
}
newnode->next = (hashTable[hashIndex].head);
hashTable[hashIndex].head = newnode;
hashTable[hashIndex].count++;
return;
}

void deleteFromHash(int key) {
int hashIndex = key % eleCount, flag = 0;
struct node *temp, *myNode;
myNode = hashTable[hashIndex].head;
if (!myNode) {
printf("Given data is not present in hash Table!! ");
return;
}
temp = myNode;
while (myNode != NULL) {
if (myNode->key == key) {
flag = 1;
if (myNode == hashTable[hashIndex].head)
hashTable[hashIndex].head = myNode->next;
else
temp->next = myNode->next;

hashTable[hashIndex].count--;
free(myNode);
break;
}
temp = myNode;
myNode = myNode->next;
}
if (flag)
printf("Data deleted successfully from Hash Table ");
else
printf("Given data is not present in hash Table!!!! ");
return;
}

void searchInHash(int key) {
int hashIndex = key % eleCount, flag = 0;
struct node *myNode;
myNode = hashTable[hashIndex].head;
if (!myNode) {
printf("Search element unavailable in hash table ");
return;
}
while (myNode != NULL) {
if (myNode->key == key) {
printf("VoterID : %d ", myNode->key);
printf("Name : %s ", myNode->name);
printf("Age : %d ", myNode->age);
flag = 1;
break;
}
myNode = myNode->next;
}
if (!flag)
printf("Search element unavailable in hash table ");
return;
}
void display() {
struct node *myNode;
int i;
for (i = 0; i < eleCount; i++) {
if (hashTable[i].count == 0)
continue;
myNode = hashTable[i].head;
if (!myNode)
continue;
printf(" Data at index %d in Hash Table: ", i);
printf("VoterID Name Age ");
printf("---- ");
while (myNode != NULL) {
printf("%-12d", myNode->key);
printf("%-15s", myNode->name);
printf("%d ", myNode->age);
myNode = myNode->next;
}
}
return;
}

int main() {
int n, ch, key, age;
char name[100];
printf("Enter the number of elements:");
scanf("%d", &n);
eleCount = n;
hashTable = (struct hash *) calloc(n, sizeof(struct hash));
while (1) {
printf(" 1. Insertion 2. Deletion ");
printf("3. Searching 4. Display 5. Exit ");
printf("Enter your choice:");
scanf("%d", &ch);
switch (ch) {
case 1:
printf("Enter the key value:");
scanf("%d", &key);
getchar();
printf("Name:");
fgets(name, 100, stdin);
name[strlen(name) - 1] = '';
printf("Age:");
scanf("%d", &age);
/*inserting new node to hash table */
insertToHash(key, name, age);
break;

case 2:
printf("Enter the key to perform deletion:");
scanf("%d", &key);
deleteFromHash(key);
break;

case 3:
printf("Enter the key to search:");
scanf("%d", &key);
searchInHash(key);
break;
case 4:
display();
break;
case 5:
exit(0);
default:
printf("U have entered wrong option!! ");
break;
}
}
return 0;

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote