开散列表

创建一个开散列表,散列函数为除留余数法如下:hash(x) = x % 11,散列表中有8个元素,要求从键盘读入这8个散列元素,采用开散列即拉链法处理冲突,计算该开散列表的平均查找长度。

提示:创建一个指针数组用来表示开散列。
 输入规范
输入8个散列元素,中间以空格隔开
 输出规范输出该比散列表的平均查找长度,占一行  输入样例
7 6 92 77 3 15 28 45 输出样例
1.25

#include<iostream>       

#include<stdio.h>       

#include<memory.h>       

#define maxsize 100       

using namespace std;       

  struct node       

  {  node *next;       

    int data;       

 };       

   node a[11];        

  int find(int x)       

  {       

   int time=1;       

   node *p;       

    p=&a[x%11];       

  
while(p->data!=x)  {      

    p=p->next ;time++;       

  
 }       

 return time;           

  
}       

int main()       

  
{  int i,n,j,sum=0;       

 float h;       

  int tem[8];      
 node *s;       

    for(i=0;i<11;i++)       

 a[i].data=-1;       

  for(i=0;i<8;i++)       

   {  cin>>n;       

  tem[i]=n;       

    j=n%11;
  
 if(a[j].data==-1)       

  a[j].data=n;       

    else   

  

{  s=new(node);       

 s->data=a[j].data;       

    s->next=a[j].next;       

   a[j].next=s;       

  
 a[j].data=n;       

  

     

  

}       

  
 }       

 for(i=0;i<8;i++)       

  sum+=find(tem[i]);       

  

h=sum/8.0;       

   cout<<h<<endl;       

   return 0;       

  }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值