版权声明:转载请注明出处 https://blog.csdn.net/qq_42292831/article/details/85001885
首先附上本篇文章的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;
}
运行结果: