哈希查找与增补
题目描述
给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为11,哈希冲突用链地址法和表尾插入
如果首次查找失败,就把数据插入到相应的位置中
实现哈希查找与增补功能
输入
第一行输入n,表示有n个数据
第二行输入n个数据,都是自然数且互不相同,数据之间用空格隔开
第三行输入t,表示要查找t个数据
从第四行起,每行输入一个要查找的数据,都是正整数
输出
每行输出对应数据的查找结果,每个结果表示为数据所在位置[0,11)和查找次数,中间用空格分开
样例输入
6
11 23 39 48 75 62
6
39
52
52
63
63
52
样例输出
6 1
error
8 1
error
8 2
8 1
思路:
用一个结构体数组m表示哈希表
#include
using namespace std;void test(int t)
{struct Node{int data;struct Node *next;};int n;n=t;struct Node *m;m = new Node[11];for(int i=0;i>value;key=value%11; //取keyt1= new Node; //生成新结点,插入到m[key]尾部t1->data=value;t1->next=NULL;t2=m[key].next;if(t2 == NULL)m[key].next=t1;else{while(t2->next != NULL)t2=t2->next;t2->next=t1;}}int search_num,search_time;cin>>search_num;for(int i=0;i>value;key=value%11; //取keysearch_time=0;t1=m[key].next;if(t1==NULL) //头结点需要另外判断是否找到{t2=new Node;t2->data=value;t2->next=NULL;m[key].next=t2;cout<<"error"<data==value) //若找到,则返回{cout<next;}}if(t1==NULL) //若没找到,则插到尾部{t1=new Node;t1->data=value;t1->next=NULL;t2->next=t1;cout<<"error"<>t){test(t);}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
