Hash演算法的應用 我的部落格

2021-07-24 07:58:31 字數 2346 閱讀 1490

#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函式的說法,只有單向函式的說法。所謂的單向函式,是乙個複雜的定義,大家可以去看計算理論或者密碼學方面的資料。用 人 類 的語言描述單向函式就是 如果某個函式在給定輸入的時候,很容易計算出其結果來 而當給定結果的時候,很難計算出輸入來,這就是單項函式。各種加密函 數都可以被認為...