哈希表平方探测法c语言

一直查不到怎么用平方探测法建立……
怎么用平方探测法建立呀?

#include<stdio.h>
#include<stdlib.h>
#define NULLKEY - 1
#define MaxSize 100
typedef int KeyType;
typedef chat InfoType;
typedef struct
{
    KeyType key;
    InfoType data;
    int count;
}HashTable;
void InsertHT(HashTable ha[],int &n,int m,int p,KeyType k)
{
    int adr;
    int cnt;
    adr = k%p;
    if(ha[adr].key==NULLKEY)
    {
        ha[adr].key=k;
        ha[adr].count=1;
    }
    else
    {
        cnt=1;
        do
        {
            adr=(adr+1)%m;
            cnt++;
        }while(ha[adr].key!=NULLKEY);
        ha[adr].key=k;
        ha[adr].count=cnt;
    }
    n++;
}
void CreateHT(HashTable ha[],int &n,int m,int p,KeyType keys[],int total)
{
    int i;
    for(i=0;i<m;i++)
    {
        ha[i].key=NULLKEY;
        ha[i].count=0;
    }
    n=0;
    for(i=0;i<total;i++)
    {
        InsertHT(ha,n,m,p,keys[i]);
    }
}{
    KeyType key;
    InfoType data;
    int count;
}HashTable;
void InsertHT(HashTable ha[],int &n,int m,int p,KeyType k)
{
    int adr;
    int cnt;
    adr = k%p;
    if(ha[adr].key==NULLKEY)
    {
        ha[adr].key=k;
        ha[adr].count=1;
    }
    else
    {
        cnt=1;
        do
        {
            adr=(adr+1)%m;
            cnt++;
        }while(ha[adr].key!=NULLKEY);
        ha[adr].key=k;
        ha[adr].count=cnt;
    }
    n++;
}
void CreateHT(HashTable ha[],int &n,int m,int p,KeyType keys[],int total)
{
    int i;
    for(i=0;i<m;i++)
    {
        ha[i].key=NULLKEY;
        ha[i].count=0;
    }
    n=0;
    for(i=0;i<total;i++)
    {
        InsertHT(ha,n,m,p,keys[i]);
    }
}