C語言 - Hush查詢演算法(簡易)
阿新 • • 發佈:2018-12-14
首先附上本篇文章的Hush查詢核心演算法:
****************************************************************************************************************************************
☆原始碼 (Hush_Search.cpp):
//Hush_Search #include <iostream> #include <time.h> typedef int DataType; using namespace std; typedef struct node { DataType number; struct node *link; }Node; typedef struct head { int address; Node *link; }Head; Head InsertData(Head h,int data) { if (h.link == NULL) { Node *n; n = (Node *)malloc(sizeof(Node)); n->number = data; n->link = NULL; h.link = n; } else { Node *m; m = (Node *)malloc(sizeof(Node)); m->number = data; m->link = h.link; h.link = m; } return h; } bool Search(Node *p,int search_number) //send node not the head point(head[i].link) { if (p == NULL) { return false; } else if (p->number == search_number) { return true; } while (p->number != search_number) { p = p->link; if (p == NULL) { return false; } else if (p->number == search_number) { return true; } } } int main() { srand(unsigned(time(NULL))); int random_number[20]; Head head[10]; for (int i = 0; i < 10; i++) { head[i].address = i; head[i].link = NULL; } for (int i = 0; i < 20; i++) { random_number[i] = rand() % 100; cout << random_number[i] << " "; head[random_number[i] % 10] = InsertData(head[random_number[i]%10],random_number[i]); } cout << endl << endl; system("pause"); cout << endl; cout << "Please enter the search_number: "; int search_number; cin >> search_number; Node *p = head[search_number % 10].link; bool result = Search(p, search_number); if (result) { cout << "Find it: " << search_number << endl; } else { cout << "Not find it: " << search_number << endl; } return 0; }
執行結果: