一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MASS競(jìng)猜幸運(yùn)哈希游戲系統(tǒng)開(kāi)發(fā)中沖突的解決方法

開(kāi)發(fā)丨KFZ433 ? 來(lái)源:開(kāi)發(fā)丨KFZ433 ? 作者:開(kāi)發(fā)丨KFZ433 ? 2022-06-29 16:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

3.2 鏈地址法

鏈地址法就是將相應(yīng)位置上沖突的所有關(guān)鍵詞存儲(chǔ)在同一個(gè)單鏈表中。

設(shè)關(guān)鍵字序列為 47 , 7 , 29 , 11 , 16 , 92 , 22 , 8 , 3 , 50 , 37 , 89 , 94 , 21 47, 7, 29, 11, 16, 92, 22, 8, 3, 50, 37, 89, 94, 2147,7,29,11,16,92,22,8,3,50,37,89,94,21,散列函數(shù)取為h ( k e y ) = k e y m o d ?? 11 h(key) = key \mod 11h(key)=keymod11,用分離鏈接法處理沖突。

pYYBAGK8EYuAM8EkAAO9Y8tZolU243.png

表中有9個(gè)結(jié)點(diǎn)只需1次查找,5個(gè)結(jié)點(diǎn)需要2次查找,所以查找成功的平均查找次數(shù)為:

A S L s = ( 9 + 5 ? 2 ) / 14 ≈ 1.36

參考代碼:

#include

#include

#include

#include

#include

using namespace std;

#define MAXTABLESIZE 10000 //允許開(kāi)辟的最大散列表長(zhǎng)度

#define KEYLENGTH 100 //關(guān)鍵字的最大長(zhǎng)度

typedef int ElementType;

struct LNode

{

ElementType data;
LNode *next;

};

typedef LNode *PtrToNode;

typedef PtrToNode LinkList;

struct TblNode

{

int tablesize;  //表的最大長(zhǎng)度
LinkList heads; //存放散列單元數(shù)據(jù)的數(shù)組

};

typedef struct TblNode *HashTable;

/返回大于n且不超過(guò)MAXTABLESIZE的最小素?cái)?shù)/

int NextPrime(int n)

{

int p = (n % 2) ? n + 2 : n + 1; //從大于n的下一個(gè)奇數(shù)開(kāi)始
int i;
while (p <= MAXTABLESIZE)
{
    for (i = (int)sqrt(p); i > 2; i--)
    {
        if ((p % i) == 0)
            break;
    }
    if (i == 2)
        break; //說(shuō)明是素?cái)?shù),結(jié)束
    else
        p += 2;
}
return p;

}

/創(chuàng)建新的哈希表/

HashTable CreateTable(int table_size)

{

HashTable h = (HashTable)malloc(sizeof(TblNode));
h->tablesize = NextPrime(table_size);
h->heads = (LinkList)malloc(h->tablesize * sizeof(LNode));
//初始化表頭結(jié)點(diǎn)
for (int i = 0; i < h->tablesize; i++)
{
    h->heads[i].next = NULL;
}
return h;

}

/查找數(shù)據(jù)的初始位置/

int Hash(ElementType key, int n)

{

//這里只針對(duì)大小寫(xiě)
return key % 11;

}

/查找元素位置/

LinkList Find(HashTable h, ElementType key)

{

int pos;
pos = Hash(key, h->tablesize); //初始散列位置
LinkList p = h->heads[pos].next; //從鏈表的第一個(gè)節(jié)點(diǎn)開(kāi)始
while (p && key != p->data)
{
    p = p->next;
}
return p;

}

/插入新的元素/

bool Insert(HashTable h, ElementType key)

{

LinkList p = Find(h, key); //先查找key是否存在
if (!p)
{
    //關(guān)鍵詞未找到,可以插入
    LinkList new_cell = (LinkList)malloc(sizeof(LNode));
    new_cell->data = key;
    int pos = Hash(key, h->tablesize);
    new_cell->next = h->heads[pos].next;
    h->heads[pos].next = new_cell;
    return true;
}
else
{
    cout << "鍵值已存在!" << endl;
    return false;
}

}

/銷毀鏈表/

void DestroyTable(HashTable h)

{

int i;
LinkList p, tmp;
//釋放每個(gè)節(jié)點(diǎn)
for (i = 0; i < h->tablesize; i++)
{
    p = h->heads[i].next;
    while (p)
    {
        tmp = p->next;
        free(p);
        p = tmp;
    }
}
free(h->heads);
free(h);

}

int main(int argc, char const *argv[])

{

int a[] = {47, 7, 29,29, 11, 16, 92, 22, 8, 3, 50, 37, 89, 94, 21};
int n = 15;
HashTable h = CreateTable(n);
for (int i = 0; i < n; i++)
{
    Insert(h, a[i]); //插入元素
}
for (int i = 0; i < h->tablesize; i++)
{
    LinkList p = h->heads[i].next;
    while (p)
    {
        cout << p->data << " "; //打印哈希表元素
        p = p->next;
    }
    cout << endl;
}
return 0;

}

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70786
  • 哈希函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    9608
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    瑞芯微RK3506 3核A7@1.5GHz+雙網(wǎng)口+雙CAN-FD 工業(yè)開(kāi)發(fā)板—Linux系統(tǒng)開(kāi)發(fā)手冊(cè)

    本文主要演示Linux系統(tǒng)開(kāi)發(fā)流程。包括LinuxSDK的配置與編譯,U-Boot、Kernel及Rootfs開(kāi)發(fā),以及系統(tǒng)鏡像的替換方法,旨在幫助
    的頭像 發(fā)表于 05-20 09:24 ?219次閱讀
    瑞芯微RK3506 3核A7@1.5GHz+雙網(wǎng)口+雙CAN-FD 工業(yè)<b class='flag-5'>開(kāi)發(fā)</b>板—Linux<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>手冊(cè)

    Dali通信系統(tǒng)常見(jiàn)故障及解決方法

    ,導(dǎo)致控制信號(hào)丟失。 1.2 故障原因 物理連接問(wèn)題,如斷線、接觸不良。 通信線路受到電磁干擾。 設(shè)備地址沖突。 1.3 解決方法 檢查所有連接,確保線路完整且接觸良好。 使用屏蔽電纜,并確保電纜遠(yuǎn)離強(qiáng)電磁場(chǎng)。 檢查設(shè)備地址設(shè)置,確保沒(méi)有重復(fù)。 2. 設(shè)備
    的頭像 發(fā)表于 01-10 10:38 ?982次閱讀

    基于步進(jìn)電機(jī)的柴油機(jī)EGR系統(tǒng)開(kāi)發(fā)與試驗(yàn)研究

    基于步進(jìn)電機(jī)的柴油機(jī)EGR系統(tǒng)開(kāi)發(fā)與試驗(yàn)研究
    發(fā)表于 01-09 15:01 ?0次下載

    電子焊接的常見(jiàn)問(wèn)題及解決方法

    電子焊接是電子組裝過(guò)程的關(guān)鍵步驟,焊接質(zhì)量的好壞直接影響電子產(chǎn)品的性能和可靠性。在電子焊接過(guò)程,經(jīng)常會(huì)遇到一些常見(jiàn)問(wèn)題,掌握其解決方法對(duì)于提高焊接質(zhì)量具有重要意義。以下是幾種常見(jiàn)的電子焊接
    的頭像 發(fā)表于 01-09 10:28 ?1210次閱讀

    mac的常見(jiàn)問(wèn)題解決方法

    Mac常見(jiàn)問(wèn)題解決方法 1. 系統(tǒng)啟動(dòng)緩慢 問(wèn)題描述: 啟動(dòng)Mac時(shí),系統(tǒng)啟動(dòng)緩慢,甚至出現(xiàn)卡頓現(xiàn)象。 解決方法: 檢查啟動(dòng)項(xiàng)目: 打開(kāi)系統(tǒng)
    的頭像 發(fā)表于 12-19 15:02 ?1135次閱讀

    診斷系統(tǒng)開(kāi)發(fā)咨詢服務(wù)

    隨著汽車(chē)電控系統(tǒng)復(fù)雜度及消費(fèi)者對(duì)于汽車(chē)售后服務(wù)水平要求的提升,診斷系統(tǒng)開(kāi)發(fā)在整車(chē)開(kāi)發(fā)的重要度日益突出。經(jīng)過(guò)多年的實(shí)踐,經(jīng)緯恒潤(rùn)積累了豐富的經(jīng)驗(yàn),業(yè)務(wù)涵蓋診斷協(xié)議及功能定義、診斷測(cè)試、
    的頭像 發(fā)表于 12-18 16:30 ?754次閱讀
    診斷<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>咨詢服務(wù)

    Ubuntu系統(tǒng)常見(jiàn)問(wèn)題及解決方法

    Ubuntu是一個(gè)基于Linux的開(kāi)源操作系統(tǒng),以其穩(wěn)定性和易用性而受到許多用戶的喜愛(ài)。然而,在使用過(guò)程,用戶可能會(huì)遇到各種問(wèn)題。以下是一些Ubuntu系統(tǒng)中常見(jiàn)的問(wèn)題及其解決方法
    的頭像 發(fā)表于 12-12 14:32 ?1590次閱讀

    常見(jiàn)伺服系統(tǒng)故障及解決方法

    伺服系統(tǒng)在自動(dòng)化領(lǐng)域中扮演著重要角色,但其運(yùn)行過(guò)程可能會(huì)遇到各種故障。以下是一些常見(jiàn)的伺服系統(tǒng)故障及其解決方法: 一、電機(jī)無(wú)法啟動(dòng) 故障現(xiàn)象 :電機(jī)無(wú)法啟動(dòng),無(wú)法響應(yīng)控制命令。 可能
    的頭像 發(fā)表于 12-10 10:21 ?2207次閱讀

    嵌入式系統(tǒng)開(kāi)發(fā)的測(cè)試方法 嵌入式系統(tǒng)開(kāi)發(fā)與AI結(jié)合應(yīng)用

    嵌入式系統(tǒng)開(kāi)發(fā)的測(cè)試方法 嵌入式系統(tǒng)開(kāi)發(fā)是一個(gè)復(fù)雜的過(guò)程,涉及到硬件和軟件的緊密結(jié)合。測(cè)試是確保系統(tǒng)可靠性和性能的關(guān)鍵步驟。以下是一些常用
    的頭像 發(fā)表于 12-09 10:22 ?1371次閱讀

    嵌入式系統(tǒng)開(kāi)發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開(kāi)發(fā)常見(jiàn)問(wèn)題解決

    嵌入式系統(tǒng)開(kāi)發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)是專為特定應(yīng)用設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),它們通常嵌入在所控制的設(shè)備。這些系統(tǒng)的關(guān)鍵特點(diǎn)是它們與硬件的緊密集成
    的頭像 發(fā)表于 12-09 09:38 ?981次閱讀

    常見(jiàn)晶振故障及解決方法 晶振在物聯(lián)網(wǎng)的應(yīng)用

    常見(jiàn)晶振故障及解決方法 晶振(Crystal Oscillator)是一種利用石英晶體的壓電效應(yīng)來(lái)產(chǎn)生穩(wěn)定振蕩頻率的電子元件,廣泛應(yīng)用于各種電子設(shè)備,包括物聯(lián)網(wǎng)(IoT)設(shè)備。晶振的穩(wěn)定性和準(zhǔn)確性
    的頭像 發(fā)表于 12-09 09:34 ?1850次閱讀

    以太網(wǎng)組網(wǎng)常見(jiàn)故障及解決方法

    相互通信。 解決方法: 檢查網(wǎng)線是否損壞,使用網(wǎng)線測(cè)試儀進(jìn)行測(cè)試。 確保網(wǎng)線插頭(RJ45)插入到位,沒(méi)有松動(dòng)。 更換網(wǎng)線或接口,排除物理?yè)p壞的可能性。 檢查交換機(jī)和路由器的端口狀態(tài),確保它們正常工作。 2. IP地址沖突 故障現(xiàn)象: 網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-08 09:13 ?3112次閱讀

    常見(jiàn)GPU問(wèn)題及解決方法

    各種問(wèn)題。以下是一些常見(jiàn)的GPU問(wèn)題及其解決方法: GPU驅(qū)動(dòng)程序過(guò)時(shí)或不兼容 問(wèn)題描述:GPU驅(qū)動(dòng)程序是GPU與操作系統(tǒng)之間的橋梁,負(fù)責(zé)將操作系統(tǒng)的指令轉(zhuǎn)換為GPU可以理解的指令。如果驅(qū)動(dòng)程序過(guò)時(shí)或不兼容,可能會(huì)導(dǎo)致GPU性能
    的頭像 發(fā)表于 10-27 14:12 ?3699次閱讀

    ChatGPT 在游戲開(kāi)發(fā)的創(chuàng)新應(yīng)用

    游戲開(kāi)發(fā)領(lǐng)域,人工智能技術(shù)的應(yīng)用正變得越來(lái)越廣泛。ChatGPT,作為一種先進(jìn)的自然語(yǔ)言處理(NLP)模型,為游戲開(kāi)發(fā)帶來(lái)了許多創(chuàng)新的應(yīng)用。 1. 動(dòng)態(tài)對(duì)話
    的頭像 發(fā)表于 10-25 18:05 ?1203次閱讀

    IP地址沖突解決方法圖示

    ! 那么,什么是 IP 地址沖突呢?其實(shí)很簡(jiǎn)單,就是在同一個(gè)網(wǎng)絡(luò),有兩個(gè)或多個(gè)設(shè)備被分配了相同的 IP 地址,那么在來(lái)兩方同時(shí)使用的時(shí)候,就像真假獼猴一樣,必然是要打架的。 那如果遇到 IP 地址沖突,我們?cè)撊绾巫瞿兀科鋵?shí)也很
    的頭像 發(fā)表于 07-26 11:51 ?1128次閱讀