有哪些程式可能會用到hash函式

2021-03-10 22:16:07 字數 4244 閱讀 5374

1樓:匿名使用者

//雜湊函式同時決定了雜湊表插槽的數量

#pragma once

// hash function class (abstract)

// 所有雜湊函式的基類

class hashfunction

;//雜湊函式基類的編譯檔案

#include ".\hashfunction.h"

hashfunction::hashfunction(unsigned int hashbound):

myhashbound( hashbound )

hashfunction::~hashfunction(void)

unsigned int hashfunction::gethashbound()

//***********************************=

//***********************************=

//***********************************=

//乙個簡單的使用取餘實現的雜湊函式

#pragma once

#include "hashfunction.h"

class divisionfunction :

public hashfunction

;#include ".\divisionfunction.h"

divisionfunction::divisionfunction(unsigned int hashbound) :

hashfunction( hashbound )

divisionfunction::~divisionfunction(void)

unsigned int divisionfunction::hashfunction( unsigned int key )

//***********************************=

//***********************************=

//***********************************=

//雜湊表的實現(標頭檔案)

#pragma once

#include "hashfunction.h"

//the hash table that resolves collision problem by chaining technic

//使用鍊錶解決碰撞問題的雜湊表

#include

using namespace std;

template

class llisthashtable

};//a hash slot data type

//乙個插槽的資料型別

//乙個插槽存放乙個鍊錶

struct hashslot

};private:

hashfunction * myhashfunc;

typedef hashslot * hashslotptr;

hashslotptr * myhashtable;

public:

llisthashtable( hashfunction * hashfunc );

~llisthashtable(void);

public:

tobject * hash_search( unsigned int key );

tobject * hash_delete( unsigned int key );

int hash_insert( tobject * object, unsigned int key );

void clear_and_destroy();

void clear();

void printhashtable();

};template

llisthashtable ::llisthashtable( hashfunction * hashfunc ):

myhashfunc ( hashfunc ),

myhashtable( null )}}

template

llisthashtable ::~llisthashtable(void)

delete myhashtable[i];

}delete (this->myhashtable);

}if( this->myhashfunc )delete myhashfunc;

}template

tobject * llisthashtable ::hash_search( unsigned int key )

searcher = searcher->next;

}return null;

}template

tobject * llisthashtable ::hash_delete( unsigned int key )

else

if( searcher->prev != null )

else

delete searcher;

return todelete;

}searcher = searcher->next;

}return null;

}template

int llisthashtable ::hash_insert( tobject * object, unsigned int key )

else

else

}return 0;

}template

void llisthashtable ::clear_and_destroy()

myhashtable[i]->thelisthead = null;

myhashtable[i]->thelisttail = null;}}

}template

void llisthashtable ::clear()

myhashtable[i]->thelisthead = null;

myhashtable[i]->thelisttail = null;}}

}template

void llisthashtable ::printhashtable()

cout << endl;}}

}//***********************************==

//***********************************==

//***********************************==

//主程式(測試用的)

#include "llisthashtable.h"

#include "divisionfunction.h"

int main()

for( i = 0; i < 100; i += 5 )

allisthash.printhashtable();

for( i = 0; i < 100; i += 2 )

allisthash.printhashtable();

allisthash.clear_and_destroy();

allisthash.printhashtable();

return 0;

}另外,虛機團上產品**,超級便宜

2樓:匿名使用者

只要你想用,都可以用

hash函式的主要應用有哪些

3樓:匿名使用者

hash演算法在資訊保安方面的應用主要體現在以下的3個方面:

1)檔案校驗

我們比較熟悉的校驗演算法有奇偶校驗和crc校驗,這2種校驗並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料傳輸中的通道誤碼,但卻不能防止對資料的惡意破壞。

md5 hash演算法的"數字指紋"特性,使它成為目前應用最廣泛的一種檔案完整性校驗和(checksum)演算法,不少unix系統有提供計算md5 checksum的命令。

2)數字簽名

hash 演算法也是現代密碼體系中的乙個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向雜湊函式扮演了乙個重要的角色。對 hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對檔案本身進行數字簽名是等效的。

而且這樣的協議還有其他的優點。

3)鑑權協議

如下的鑑權協議又被稱作"挑戰--認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。

男生可能是單身 90有可能會用這種情侶頭像嗎?有什麼含義嗎

這個頭像很可愛.哈哈,我儲存了。這個頭像妹子較為喜歡吧,男生喜歡也不奇怪測,很可愛 哎,這個頭像有什麼特殊含義麼 乙個男生單身,會無緣無故用情侶頭像嗎 輝呀,我朋友經常這樣 我們要愛就愛到永遠 我們一起許下的誓言 我們刻在心間永不變 我們度過一年又一年 有可能是不知道是情頭 乙個男生,單身卻經常用情...

直女有可能會愛上同性嗎,直女有可能會愛上同性嗎?

直女不代表女t哦,這個完全不能夠劃等號的。不會的。無論怎麼愛也不如自己的老公。即使能瞞天過海愛上同性,最終還是會和心愛的男人結婚。如果真是直女就不可能,除非本來是雙性戀否則不可能。可能性很低,畢竟鋼鐵直女有掰彎實在是難。也不是完全沒有機會叭,但不顧一切就比較難了呢。加油鴨!不可復能的。因為直女,就是...

大腸癌早期,身體可能會有哪些表現

之前看到有讀者聊到腸癌的這個問題,說患上癌症就等於是被死神下達了生命倒計時的通知書。其實有一些癌症若是能夠抓住早期的一些症狀,及時發現的話,也是能夠達到有效 或者是有效的抑制的目的。而且我們看到一些在早期發現癌症,並且 的案例的時候,都會覺得他們非常的幸運。而今天我們要說的這一種癌症就是大腸癌。大腸...