C语言 - Hush查找算法(简易)

版权声明:转载请注明出处 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;
}

运行结果:

猜你喜欢

转载自blog.csdn.net/qq_42292831/article/details/85001885