#pragma once
#include using namespace std;
typedef struct tsublist
tsublist;
class myhash
;
myhash.cpp
#include "myhash.h"
#include#include#define min(a,b) ((a)>(b)?(b):(a))
#include myhash::myhash(int nelements)
//為鍊錶分配記憶體
listptr = new tsublist[numlists]; //對於鍊錶中的str,idx後續用到再開闢記憶體,由於不能夠確定要開闢多少。
for(int i = 0;i < numlists ;i++)
numelementsallocated = 0;
}int myhash::hash(const string &s) //求取hash值,簡單的雜湊演算法
hashvalue = hashvalue % numlists; //限定hash值的範圍為[0,numlists)
return hashvalue;
}int myhash::find(const string &s)
result = numelements;
listptr[hashnum].nelem ++;
if(listptr[hashnum].nelem >= listptr[hashnum].nallocated)
stringptr[numelements] = temp;
listptr[hashnum].str[listptr[hashnum].nelem] = temp;
listptr[hashnum].idx[listptr[hashnum].nelem] = numelements;
return result;
}tsublist* myhash::resizesublist(tsublist *sublist)
string *myhash::reallocstr(string *s,int oldsize,int newsize)
delete s; //釋放原來的記憶體
} s = x;
return s;
}int* myhash::reallocidx(int *idx,int oldsize,int newsize)//這裡將為指標開闢的記憶體返回,也可以選擇二級指標
idx = temp;
return idx;
}void myhash::resizestrptr() //調整stringptr開闢記憶體
delete stringptr; //釋放原來的記憶體
} stringptr = newpointer;
}myhash::~myhash(void)
if(listptr[i].str)
} //釋放鍊錶中的指標開闢的記憶體。
if(listptr)
if(stringptr)
}
測試**main.cpp
#include #include "myhash.h"
#include using namespace std;
*********************2016/11/4日**********************
/#define numbercommand 11
string execcommand[numbercommand];
void definecommand();
void new( );
void edit();
int main() //測試**
parampointer = commandlist->find("show");
cout << parampointer << endl;
switch(parampointer) //定義要實現的函式
delete commandlist;
system("pause");
return 0;
}void definecommand()
void new( )
void edit()
這是其中雜湊表簡單的應用,其中網上較為流傳的有暴雪雜湊演算法,尤為經典,它演算法的實現原理與md5加密演算法有點相似。它裡面用到三次雜湊,通過這種雜湊演算法,能夠快速查詢是否庫里有這個檔案,而不需要乙個個字串的去對比。對於其中為何來實現單向雜湊演算法,這還得深究! hash演算法與應用
hash,一般翻譯做 雜湊 也有直接音譯為 雜湊 的,就是把任意長度的輸入 又叫做預對映,pre image 通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,而不可能從雜湊值來唯一的確定輸入值...
Hash演算法應用場景
一.雜湊演算法的定義 1.雜湊演算法又叫雜湊演算法,是將任意長度的二進位制值對映為較短的固定長度的二進位制值,這個小的二進位制值稱為雜湊值。它的原理其實很簡單,就是把一段交易資訊轉換成乙個固定長度的字串。2.雜湊表是基於快速訪問的角度設計的,是一種典型的空間換時間的做法,二.從set map談到ha...
經典的hash演算法 常見hash 雜湊演算法
計算理論中,沒有hash函式的說法,只有單向函式的說法。所謂的單向函式,是乙個複雜的定義,大家可以去看計算理論或者密碼學方面的資料。用 人 類 的語言描述單向函式就是 如果某個函式在給定輸入的時候,很容易計算出其結果來 而當給定結果的時候,很難計算出輸入來,這就是單項函式。各種加密函 數都可以被認為...