构造哈希表(耿8.12)

匿名 (未验证) 提交于 2019-12-03 00:19:01

Description

选取哈希函数H(k)=(3k)%11,用线性探测再散列法处理冲突。试在0-10的散列地址空间中,编写程序,对关键字序列 (22,41,53 46,30,13,01,67)构造哈希表,并求等概率情况下查找成功的平均查找长度。

Input

Output

输出等概率情况下查找成功的平均查找长度。

  • 2
#include <stdio.h> #include <stdlib.h>  struct Node{     int ori;     int after; }*Hash[11];  int data[8]={22,41,53,46,30,13,01,67};  void change() {     int i;     int temp,flag;     for(i=0;i<8;i++)     {         flag = 1;         temp = (3 * data[i]) % 11;         while(Hash[temp] != NULL)         {             ++temp;             ++flag;         }         Hash[temp] = (struct Node *)malloc(sizeof(struct Node));//又忘了写QAQ         Hash[temp] -> ori = data[i];         Hash[temp] -> after = flag;     } }  void print() {     int i;     int sum=0;     for(i=0;i<=10;i++)     {         if(Hash[i]!=NULL)         {             sum += Hash[i]->after;         }     }     printf("%d\n",sum/8); } int main() {     change();     print();     return 0; } 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!