DS哈希查找—线性探测再散列

题目描述

 定义哈希函数为H(key) = key%11。输入表长(大于、等于11),输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。

--程序要求--

若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio

程序中若include多过一个头文件,不看代码,作0分处理

不允许使用第三方对象或函数实现本题的要求

输入

 测试次数t

每组测试数据为:

哈希表长m、关键字个数n

n个关键字

查找次数k

k个待查关键字

 

输出

对每组测试数据,输出以下信息:

构造的哈希表信息,数组中没有关键字的位置输出NULL

对k个待查关键字,分别输出:0或1(0—不成功,1—成功)、比较次数、查找成功的位置(从1开始)

 

样例输入

1

12 10

22 19 21 8 9 30 33 4 15 14

4

22

56

30

17

样例输出

22 30 33 14 4 15 NULL NULL 19 8 21 9

1 1 1

0 6

1 6 2

0 1

#include
using namespace std;
int main(){
    int t;
    cin>>t;
    while(t--){
        int m; 
        int n;
        cin>>m>>n;
         
        int array[m];
        for(int i= 0; i< m ; i++) 
           array[i]= -100000;
        for(int i= 0; i< n; i++){
            int shu;
            cin>>shu;
             
            if(array[shu%11]== -100000){
                array[shu%11]= shu;
            }
            else{
                int d= 0;
                while(true){
 
                    if(array[(shu%11+ d)%(m)]== -100000){
                        array[(shu%11+ d)%(m)]= shu;
                        break;
                    } 
                    else
                      d++;
                     
                }
            }
     
        }
        for(int i= 0; i< m; i++){
            if(array[i]!= -100000)
              cout<>k;
        while(k--){
            int shu;
            cin>>shu;
            int times= 0;
            int pos= 0;
             
            int d= 0;
            while(true){
                times++;
                if(array[(shu%11+ d)%m]== shu){
                    cout<<"1"<<' '<

 

你可能感兴趣的:(C++)