91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级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;
}

}

/銷(xiāo)毀鏈表/

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

    文章

    4968

    瀏覽量

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

    關(guān)注

    0

    文章

    43

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    RK3562 單板機(jī)系統(tǒng)開(kāi)發(fā)完全手冊(cè):U-Boot/Kernel/Rootfs 開(kāi)發(fā)與性能優(yōu)化

    本文為創(chuàng)龍科技RK3562 單板機(jī) Linux 系統(tǒng)開(kāi)發(fā)指南,核心包含 SDK 配置、內(nèi)核與文件系統(tǒng)開(kāi)發(fā)、分區(qū)配置及 CPU/GPU/NPU 調(diào)頻等關(guān)鍵技術(shù)。文檔詳細(xì)說(shuō)明鏡像制作、程序自啟動(dòng)
    的頭像 發(fā)表于 02-05 17:20 ?294次閱讀
    RK3562 單板機(jī)<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>完全手冊(cè):U-Boot/Kernel/Rootfs <b class='flag-5'>開(kāi)發(fā)</b>與性能優(yōu)化

    C編譯器錯(cuò)誤與解決方法

    C語(yǔ)言keil編譯器提示錯(cuò)誤的解決方法,可以幫你解決程序編譯的煩惱!! C編譯器錯(cuò)誤與解決方法 1. Warning 280:’i’:unreferenced local variable
    發(fā)表于 01-22 08:03

    ADI Trinamic如何讓伺服系統(tǒng)開(kāi)發(fā)化繁為簡(jiǎn)

    “剛搞定FOC算法調(diào)試,又卡在編碼器協(xié)議解碼;好不容易湊齊分立器件,卻發(fā)現(xiàn)系統(tǒng)功耗超標(biāo)”——這大概是不少伺服系統(tǒng)開(kāi)發(fā)者的日常。隨著設(shè)備的電機(jī)數(shù)量日漸增多,傳統(tǒng)開(kāi)發(fā)模式下的硬件堆疊、軟
    的頭像 發(fā)表于 01-06 14:49 ?300次閱讀
    ADI Trinamic如何讓伺服<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>化繁為簡(jiǎn)

    瑞芯微 RK3588 平臺(tái) Debian 系統(tǒng)開(kāi)發(fā)案例與使用說(shuō)明

    主頻調(diào)節(jié)等核心內(nèi)容,還包含 TFTP/NFS 服務(wù)搭建與掛載、程序開(kāi)機(jī)自啟動(dòng)等實(shí)操指南,為評(píng)估板 Debian 系統(tǒng)開(kāi)發(fā)與運(yùn)維提供完整技術(shù)支持。
    的頭像 發(fā)表于 11-05 14:28 ?637次閱讀
    瑞芯微 RK3588 平臺(tái) Debian <b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>案例與使用說(shuō)明

    程序加載過(guò)程遇到的問(wèn)題及其解決方法

    。重新啟動(dòng)Nuclei Studio,該問(wèn)題解決。 (2)遇到的問(wèn)題2:下載程序顯示未連接到開(kāi)發(fā)板,報(bào)錯(cuò)界面如下圖所示。 解決方法:在配套文檔,只要求安裝
    發(fā)表于 10-30 07:59

    IP地址沖突導(dǎo)致德國(guó)站群服務(wù)器斷網(wǎng)的解決方法?

    在網(wǎng)絡(luò)管理,IP地址沖突是一個(gè)常見(jiàn)且令人頭疼的問(wèn)題。尤其是對(duì)于依賴站群服務(wù)器進(jìn)行大規(guī)模網(wǎng)絡(luò)操作的企業(yè)而言,IP沖突可能會(huì)導(dǎo)致整個(gè)服務(wù)器群組無(wú)法正常工作,從而造成嚴(yán)重的業(yè)務(wù)中斷。本文將探討如何解決因
    的頭像 發(fā)表于 08-12 15:47 ?775次閱讀

    明遠(yuǎn)智睿SSD2351:開(kāi)啟嵌入式系統(tǒng)開(kāi)發(fā)新時(shí)代

    在當(dāng)今科技飛速發(fā)展的時(shí)代,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域,從智能家居到工業(yè)自動(dòng)化,從智能交通到醫(yī)療設(shè)備,嵌入式系統(tǒng)無(wú)處不在。而開(kāi)發(fā)板作為嵌入式系統(tǒng)開(kāi)發(fā)的核心工具,其性能和功能直接影響
    的頭像 發(fā)表于 07-15 15:47 ?563次閱讀

    明遠(yuǎn)智睿SSD2351:嵌入式系統(tǒng)開(kāi)發(fā)的卓越之選

    以獨(dú)特的魅力開(kāi)啟嵌入式系統(tǒng)開(kāi)發(fā)的新篇章。 性能卓越,計(jì)算能力出眾 明遠(yuǎn)智睿SSD2351搭載了四核1.4GHz處理器,這一配置在同類(lèi)開(kāi)發(fā)脫穎而出。四核架構(gòu)的設(shè)計(jì)是其性能卓越的關(guān)鍵所在,它使得處理器能夠并行處理多個(gè)任務(wù),大大提
    的頭像 發(fā)表于 07-15 15:46 ?626次閱讀

    國(guó)產(chǎn)主板無(wú)法開(kāi)機(jī)的狀況及解決方法

    在計(jì)算機(jī)的硬件系統(tǒng),主板作為連接各個(gè)組件的關(guān)鍵樞紐,其穩(wěn)定運(yùn)行至關(guān)重要。隨著國(guó)產(chǎn)主板技術(shù)的不斷發(fā)展與普及,了解其常見(jiàn)故障及解決方法,能幫助用戶在遇到問(wèn)題時(shí)快速排查修復(fù),保障計(jì)算機(jī)正常使用。
    的頭像 發(fā)表于 07-02 09:33 ?1295次閱讀
    國(guó)產(chǎn)主板無(wú)法開(kāi)機(jī)的狀況及<b class='flag-5'>解決方法</b>

    泰克MSO2024B混合信號(hào)示波器在嵌入式系統(tǒng)開(kāi)發(fā)的應(yīng)用

    MSO2024B混合信號(hào)示波器以其高性能參數(shù)、靈活的觸發(fā)機(jī)制和全面的協(xié)議解碼能力,成為嵌入式系統(tǒng)開(kāi)發(fā)的理想選擇。本文將深入探討其在嵌入式系統(tǒng)開(kāi)發(fā)的具體應(yīng)用及優(yōu)勢(shì)。 ? 一、泰克MS
    的頭像 發(fā)表于 06-16 15:40 ?854次閱讀
    泰克MSO2024B混合信號(hào)示波器在嵌入式<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b><b class='flag-5'>中</b>的應(yīng)用

    電機(jī)常見(jiàn)的噪音、振動(dòng)問(wèn)題及解決方法

    ,甚至引發(fā)安全隱患。本文將系統(tǒng)分析電機(jī)常見(jiàn)的噪音和振動(dòng)問(wèn)題,并提供切實(shí)可行的解決方法。 ? 一、電機(jī)噪音問(wèn)題及解決方法 電機(jī)噪音主要來(lái)源于電磁噪音、機(jī)械噪音和空氣動(dòng)力噪音三個(gè)方面。 1. 電磁噪音 電磁噪音是由于電機(jī)內(nèi)部
    的頭像 發(fā)表于 06-08 10:25 ?3643次閱讀

    瑞芯微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 ?1377次閱讀
    瑞芯微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è)

    電機(jī)常見(jiàn)故障分析及解決方法

    電機(jī)在運(yùn)行過(guò)程可能會(huì)出現(xiàn)多種故障,以下是一些常見(jiàn)故障的分析及解決方法: 一、機(jī)械故障 1. 軸承損壞或磨損 ? ?● 故障表現(xiàn):電機(jī)運(yùn)轉(zhuǎn)不平穩(wěn),產(chǎn)生異響,嚴(yán)重時(shí)甚至停轉(zhuǎn)。 ? ?● 原因分析:通常
    的頭像 發(fā)表于 04-25 15:20 ?5691次閱讀
    電機(jī)常見(jiàn)故障分析及<b class='flag-5'>解決方法</b>

    STM32開(kāi)發(fā)入門(mén)進(jìn)階必備!《STM32嵌入式系統(tǒng)開(kāi)發(fā)—基于STM32CubeMX和HAL庫(kù)》新書(shū)發(fā)布!

    上市。高校教學(xué)推薦,STM32入門(mén)必讀!圖書(shū)介紹《STM32嵌入式系統(tǒng)開(kāi)發(fā)——基于STM32CubeMX和HAL庫(kù)》是一本介紹嵌入式系統(tǒng)STM32的基本原理和開(kāi)
    的頭像 發(fā)表于 04-03 14:54 ?1946次閱讀
    STM32<b class='flag-5'>開(kāi)發(fā)</b>入門(mén)進(jìn)階必備!《STM32嵌入式<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>—基于STM32CubeMX和HAL庫(kù)》新書(shū)發(fā)布!

    本周三晚7點(diǎn)!《手把手教你做PC》第四課:驅(qū)動(dòng)子系統(tǒng)開(kāi)發(fā)流程上-KHDF

    本周三晚七點(diǎn),《KaihongOS筆記本電腦開(kāi)發(fā)實(shí)戰(zhàn)④——驅(qū)動(dòng)子系統(tǒng)開(kāi)發(fā)流程上-KHDF》即將啟動(dòng)!本次課程旨在幫助開(kāi)發(fā)者了解KaihongOS驅(qū)動(dòng)子系統(tǒng)開(kāi)發(fā)流程、理解HDF和KHDF
    的頭像 發(fā)表于 03-10 17:32 ?659次閱讀
    本周三晚7點(diǎn)!《手把手教你做PC》第四課:驅(qū)動(dòng)子<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>流程上-KHDF