線性探查法解決沖突的查找和插入算法

//采用開(kāi)放定值法構(gòu)造散列表的類型
#define M 997
typedef struct {
    KeyType key;
    DataType data;
}Nodetype;
typedef Nodetype HashTable[M];
//假設(shè)散列函數(shù)采用除余法
int h(KeyType k, int m) {
    return k % m;
}
//采用線性探查法的散列表查找算法
int HashSearchl(HashTable HT, Keytype k, int m) {
    int d, temp;
    d = h(k, m);
    temp = d;
    while (HT[d].key != -32768) {//散列地址中的key不為空
        if (HT[d].key == k)
            return d;
        else
            d = (d + 1) % m;
        if (d == temp)//查找一周扔無(wú)空位置
            return -1;
    }
    return d;//遇到空單元,查找失敗
}
//在散列表上插入一個(gè)結(jié)點(diǎn)
int HashInsertl(HashTable HT, Nodetype s, int m) {
    int d;
    d = HashSearchl(HT, s.key, m);//查找插入位置
    if (d == -1) return -1;//表滿
    else {
        if (HT[d].key == s.key)//表中已有該結(jié)點(diǎn)
            return 0;
        else {
            HT[d] = s;
            return 1;
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容