软考初级

对于关键码序列(54,34,5,14,50,36,47,83),用链地址法(或拉链法)解决冲突构造散列表(即将冲突的元素存储在同一个单链表中,单链表的头指针存入散列地址对应的单元),设散列函数为H(Key)=Key MOD 7(MOD表示整除取余运算),则构造散列表时冲突次数最多的哈希单元的地址是( )。A.0 B.1 C.5 D.6

题目

对于关键码序列(54,34,5,14,50,36,47,83),用链地址法(或拉链法)解决冲突构造散列表(即将冲突的元素存储在同一个单链表中,单链表的头指针存入散列地址对应的单元),设散列函数为H(Key)=Key MOD 7(MOD表示整除取余运算),则构造散列表时冲突次数最多的哈希单元的地址是( )。

A.0 B.1 C.5 D.6

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设有两个散列函数H1(k)=kmod 13和H2(k)=kmod 11+1,散列表为T[0…12],用二次散列法解决冲突。函数H1用来计算散列地址,当发生冲突时,H2作为计算下一个探测地址的地址增量。假定某一时刻散列表的状态为:

下一个被插入的关键码为42,其插入位置应是( )。

A.0

B.1

C.3

D.4


正确答案:A

第2题:

分别写出在散列表中插入和删除关键字为K的一个记录的算法,设散列函数为H,解决冲突的方法为链地址法。


参考答案:
  [算法描述]
  bool insert(){
  int data;
  cin>>data;
  int ant=hash(data);
  LinkList p=HT[ant]; //初始化散列表
  while (p->next){
  if(p->next->data==data)
  return false;
  p=p->next;
  } //找到插入位置
  LinkList s;
  s=new LNode;
  s->data=data;
  s->next=p->next;
  p->next=s; //插入该结点
  return true;
  }
  bool deletes(){
  int data;
  cin>>data;
  int ant=hash(data);
  LinkList p=HT[ant]; //初始化散列表
  while (p->next){
  if(p->next->data==data){
  LinkList s=p->next;
  p->next=s->next;
  delete s; //删除该结点
  return true;
  } //找到删除位置
  p=p->next; //遍历下一个结点
  }
  return false;
  }

第3题:

用链地址法处理冲突构造的散列表中,每个地址单元所链接的同义词表的_______相同。

A、关键字

B、元素值

C、散列地址

D、含义


正确答案:C

第4题:

设线性表(59,53,46,48,37,31,25)采用散列(Hash)法进行存储和查找,散列函数为H(Key)=Key MOD 7(MOD表示整除取余运算)。若用链地址法解决冲突(即将相互冲突的元素存储在同一个单链表中)构造散列表,则散列表中与哈希地址 (38) 对应的单链表最长。

A.2

B.3

C.4

D.6


正确答案:C
53,48,25对应的地址都为4.

第5题:

用链地址法处理冲突构造的散列表中,每个地址单元所链接的同义词表中结点的()相同。

A.关键字

B.元素值

C.散列地址

D.含义


参考答案:C

第6题:

下面哪个不是用来解决哈希表冲突的开放地址法()

A.线性探测法

B.线性补偿探测法

C.拉链探测法

D.随机探测法


正确答案:C

第7题:

下面关于哈希查找的说法,不正确的是()。

A.采用链地址法处理冲突时,查找一个元素的时间是相同的

B.采用链地址法处理冲突时,若插入规定总是在链首,则插入任一个元素的时间是相同的

C.用链地址法处理冲突,不会引起二次聚集现象

D.用链地址法处理冲突,适合表长不确定的情况


参考答案:A
解释:在同义词构成的单链表中,查找该单链表表中不同元素,所消耗的时间不同。

第8题:

(4)设散列表的地址空间为0到18,散列函数为h(k)=k mod 19,用线性控查法解决碰撞。现从空的散列表开始,依次插入关键码值190,89,217,75,则最后一个关键码33的地址为___________。


正确答案:

(4)【答案】1
【解析】线性探测法,就是在发生冲突时,从H(K) 以后的位置逐一探测,直至找到一个空位置,将新记录插入,在检索时,如果H(K)中不是所城关键值的记录,也是从H(K)往下逐一搜索,直至找到所需关键值或查找失败为止。应注意查找次序是:H(K),H(K)+1.H(K) +2,…n-1,c,1,2,…,H(K)-1,插入关键码值190,地址为0;插入关键典雅值89,地址 为13;插入关键码值217,地址为8,插入关键码值208,地址为18,插入关键码值75,产生冲突,用线性探查解决冲突后财址为1。

第9题:

对关键码序列(12,24,15,56,20,87,69,9)采用散列法进行存储和查找,并设散列函数为H(Key)=Key%11(%表示整除取余运算)。采用线性探查法(顺序地探查可用存储单元)解决冲突所构造的散列表为()。

A.

B.

C.

D.


正确答案:B

第10题:

设散列表的地址空间为0到10,散列函数为h(k)=k modll,用线性探查法解决碰撞。现从空的散列表开始,依次插入关键码值95,14,27,68,82,则最后—个关键码82的地址为:

A.4

B.5

C.6

D.7


正确答案:C
解析:本题是对散列表存储问题的考查。散列表的基本思想是:由结点的关键码值决定结点的存储地址,即以关键码值k为自变量,通过一定的函数关系h(称为散列函数),计算出对应的函数值h(k)来,把这个值解释为结点的存储地址,将结点存入该地址中。在散列表中,不同的关键码值可能对应到同一存储地址,这种现象叫碰撞,处理碰撞基本有两种方法:拉链法和线性探索法。在本题中,所采用的散列函数为h(k)=kmod11,用线性探查法解决碰撞。计算顺序如下:①h(95)=95modll=7,存在地址为7的位置;②h(14)=14modll=3,存在地址为3的位置;③h(27)=27modll=5,存在地址为5的位置;④h(68)=68modll=2,存在地址为2的位置;⑤h(82)=82modll=5,与关键码为27的存储位置发生碰撞,采用线性探索的方法解决,即将82存在5以后的首个开放位置,在本题中即为6,所以82存在地址为6的位置。因此本题正确答案为选项C。

更多相关问题