im a student of 2nd year BS, doing my BS in Computer Science.
Here I want to include a program by me, may be someone will be helped by me :)

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int* createHashTable(void);
void getData(void);
void formatting(void);
int insertData(int);
float chkLoadFactor(int, int);
int collision_LinearProbing(int, int,int);
int generateKey(int);
void rehashing(void);

#define dataSize 15
#define empty -1
#define fail 0
#define success 1

int dataArray[dataSize];
int hashSize = 5;
int* head;
int* cur;

void main(void)
{
       int count, status;
       int filledSpaces = 0;
       float loadFactor = 0;
       clrscr();
       formatting();
       getData();
       head = createHashTable();
       for( count = 0; count < dataSize ; count++)
       {
		if(loadFactor > 0.5)
			rehashing();
	       status =	insertData(dataArray[count]);
	       if(status == success)
			filledSpaces++;
	       loadFactor = chkLoadFactor(status, filledSpaces);

	       if(loadFactor <= 0.5)
			printf("LF aftr %d is = %f\t", dataArray[count], loadFactor);

	       if(status == fail)
			printf("\nNo room left for  %d\n", dataArray[count]);
       }
       cur = head;
       printf("\n\nHash Table content = [");
       for(count = 0; count < hashSize ; count++)
       {
		printf("%d, ", *cur);
		cur++;
       }
       printf("\b\b]");
       getch();
}

int* createHashTable(void)
{
	int i;

/********************** Allocating Memory for Hash Table *********************/

	head = (int*)malloc(sizeof(hashSize*2));
	cur = head;

/********************** Initialize HashTable *********************************/

	for( i = 0; i <=hashSize; i++)
	{
		*cur = empty;
		cur++;
	}
	cur = head;
	return(head);
}

void getData(void)
{
	int i;
	randomize();
	printf("\n");
	printf("Data[]={");
	for(i =0; i < dataSize; i++)
	{
		dataArray[i] = random(50);
		printf("%d,", dataArray[i]);
	}
	printf("\b}\n\n");
}

void formatting(void)
{
	int i;
	printf("\n");
	for(i =0; i<=79 ; i++)
		printf("*");

	printf("\n......... Prgogram title\t\t# Hash Table");
	printf("\n......... Created by\t\t        # Romasa Qasim");
	printf("\n......... Description\t\t 	# Creation of Hash Table, generation of,");
	printf("\t\t\t\t\t  Key, Insertion, Searching and Deletion");
	printf("\t\t\t\t\t  of data in the Hash Table\n");

	for( i =0; i<=79 ; i++)
		printf("*");
}

int insertData(int data)
{
	int hashIndex,count = 0;
	hashIndex = generateKey(data);
	if( *(head+hashIndex) == empty)
	{
		*(head+hashIndex) = data;
		return(success);
	}

	else
		return(collision_LinearProbing((++hashIndex%hashSize), count, data));

}

float chkLoadFactor(int status, int filledSpaces)
{
	float loadFactor;
	if (status == success)
	{
		loadFactor = filledSpaces / (float)hashSize;
		return(loadFactor);
	}
	else
		return(1);
}


int collision_LinearProbing(int hashIndex, int count, int data)
{
	if(count == hashSize)
		return(fail);

	 if (*(head+hashIndex) == empty)
	 {
		*(head+hashIndex) = data;
		return(success);
	 }
	 else
	 {
		collision_LinearProbing((++hashIndex % hashSize), ++count, data);
	 }

}

int generateKey(int data)
{
	int key;
	key = data % hashSize;
	return(key);
}

void rehashing(void)
{
	int count;
	int status;
	hashSize = hashSize * 2;
	head = (int*)realloc(head, sizeof(hashSize*2));

	for( count = 0; count <hashSize; count++)
	{
		*(head+count) = -1;
	}
	for(count = 0; count < dataSize; count++)
	{
		status = insertData(dataArray[count]);
	}
}

Hey, we appreciate your goodwill but this is not the way to do so. Go to 'contribute code' in the 'code snippets' section. Forums are meant only for problem solving.

I think I got to 10 bugs, then stopped counting.

nice job...
but code is difficult for understanding

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.