Hi there i am a beginner to c++ and i have a coursework due in at uni. one part requires me to make a hash table and i have no idea where to start this is my problem would be great if some1 could help-

Write your own hash function* that uses the 6 digit grid reference as a key. Using this function and the hill details already generated, add the hill details to another array, this time of 63 elements. This will be your hash table.Test that a user can search the hash table by asking the user to enter a grid reference. The program should either output details of the hill at that grid reference or output that there is no hill at that grid reference.

This is my program so far -

Code:
#include <iostream>
using namespace std;

struct Node{		//a structure that can be 
	int data;		//thought of as a simple class
	Node *link;		//All fields are public
	int height;
	int gridReference;
	int distance;
	bool climbed;
};

class LinkedList{
public:
	Node *head;		//pointer to the first node
	Node *last;		//pointer to the last node
	int count;		//number of nodes

	LinkedList();	//default constructor 
					//first = NULL
					//last = NULL
					//count = 0
	
	~LinkedList();	//destructor - deletes all nodes
					//from the linked list 
	
	void insertFirstNode(int newinfo); // inserts a node
							//at the start of the list
	void insertLastNode(int newinfo);  // inserts a node
							//at the end of the list
	void insertHills(int height, int distance, bool climbed, int gridReference);

	int getNodeCount();  //returns the number of nodes
	Node* getFirst();	 //returns the pointer to the 
						 //the first node - the value of "head"
	void displayData();
	void initializeHashTable(void);
};


#include "linkedlist.h"


LinkedList::LinkedList(){
	head = NULL;
	last = NULL;
	count = 0;
}

LinkedList::~LinkedList(){
	Node *temp = head->link;
	while(temp) {
		head->link = temp->link;
		delete temp;
		temp = head->link;
	}
	delete head;
	cout<<"linked list deleted"<<endl;
}

void LinkedList::insertFirstNode(int newInfo){
	Node *newNode;
	newNode = new Node;
	newNode->data = newInfo;
	newNode->link = head; 
	head = newNode;

	count++;

	if(last == NULL){
		last = newNode;
	}
}

void LinkedList::insertLastNode(int newInfo){
	Node *newNode;
	newNode = new Node;
	newNode->data = newInfo;
	newNode->link = NULL; 


	count++;

	if(head == NULL){
		head = newNode;
		last = newNode;
	}
	else{
		last->link = newNode;
		last = newNode;
	}
}

int LinkedList::getNodeCount(){
	return count;
}

Node* LinkedList::getFirst(){
	return head;
}

void LinkedList::insertHills(int height, int distance, bool climbed, int gridReference){

	Node* current= head;
	Node* previous= NULL;
	Node* hills= new Node();
	count++;

	hills->height= height;
	hills->distance= distance;
	hills->climbed= climbed;
	hills->gridReference= gridReference;
	hills->link= NULL;

	if(count==1)
	{          
		head= hills;
		last= hills;
		return;
	}
	do{
		if(current->height<hills->height)
		{
			hills->link= current;

			if(current== head)
			{
				head= hills;
				return;
			}
			else
			{
				previous->link= hills;
				return;
			}
			if(current==last)
			{
				current->link=hills;
				last= hills;
				return;
			}
		}
		previous=current;
		current= current->link;

	}          
	while(current!=NULL);
}


void LinkedList::displayData(){
	int noOfNodes= getNodeCount();
	Node *current;
	current= head;


	cout << "Number of Nodes = " << noOfNodes << endl;
	for(int i=0; i<noOfNodes && current != NULL; i++){
		cout<<"Hill Number: "<<count--<<endl;

		cout<<"Height: "<<current->height<<endl;

		cout<<"Distance from Home: "<<current->distance<<endl;

		cout<<"Climbed: "<<current->climbed<<endl;

		cout<<"Grid Reference: "<<current->gridReference<<endl;

		cout<<"**************"<<endl;
		current= current->link;


	}
}


#include <cstdlib>
#include <iostream>
#include "linkedlist.h"







int main(){
	LinkedList l;

	unsigned hash ( int );
	for(int i=1; i<41; i++){

		int randHeight= (rand()%1400)+3000;// generates random number for height of hill

		int randDistance= (rand()%280)+20;// generates random number for distance of hill

		int randGridReference= (rand()%100000)+400000;// generates random number for gridreference of hill

		int randClimbedNumber= (rand()%10)+1;// generates random number to tell user if hill is climbed

		bool randClimbed;
		if(randClimbedNumber>5)//This takes the random number generated from randClimbedNumber and determines if it has been climbed or not
		{
			randClimbed= true;
		}
		else
		{
			randClimbed= false;
		}
		l.insertHills(randHeight, randDistance, randClimbed, randGridReference);
	}     

	l.displayData();

	cout<<endl;


	l.displayData();


	return 0;
}
THANKS!!