#G7C02. G7-2 哈希表 课后练习

G7-2 哈希表 课后练习

  1. [G7-样题-5] 哈希表上可以执行的操作不包括() {{ select(1) }}
  • 插入
  • 排序
  • 查找
  • 删除
  1. [G7-2403-5]以下哪个方案不能合理解决或缓解哈希表冲突()。 {{ select(2) }}
  • 在每个哈希表项处,使用单链表管理该表项的冲突元素。
  • 建立额外的单链表,用来管理所有发生冲突的元素。
  • 使用不同的哈希函数再建立一个哈希表,用来管理所有发生冲突的元素。
  • 用新元素覆盖发生冲突的哈希表项。
  1. [G7-2312-10]对关键字序列 {44, 36, 23, 35, 52, 73, 90, 58} 建立哈希表,哈希函数为 h(k)=k%7h(k)=k\%7,执行下面的 Insert 函数,则等概率情况下的平均成功查找长度(即查找成功时的关键字比较次数的均值)为( )。
#include <iostream>
#include <string>
#include <cmath>
#include <vector>
using namespace std;

typedef struct Node{
    int data;
    struct Node *next;
}Node;

Node* hTab[7];
int key[]={44, 36, 23, 35, 52, 73, 90, 58, 0};

void Insert()
{
    int i,j;
    Node *x;
    for(i=0; key[i]; i++){
        j = key[i] % 7;
        x=new Node;
        x->data = key[i];
        x->next = hTab[j];
        hTab[j] = x;
    }
    return;
}

{{ select(3) }}

  • 7/8
  • 1
  • 1.5
  • 2
  1. [G7-2406-7]以下哪个方案不能合理解决或缓解哈希表冲突()。 {{ select(4) }}
  • 丢弃发生冲突的新元素。
  • 在每个哈希表项处,使用不同的哈希函数再建立一个哈希表,管理该表项的冲突元素。
  • 在每个哈希表项处,建立二叉排序树,管理该表项的冲突元素。
  • 使用不同的哈希函数建立额外的哈希表,用来管理所有发生冲突的元素。
  1. [G7-2409-9]以下哪个方案可以合理解决或缓解哈希表冲突()。 {{ select(5) }}
  • 丢弃发生冲突的新元素。
  • 用新元素覆盖发生冲突的元素。
  • 用新元素覆盖在冲突位置的下一个位置。
  • 将新元素放置在冲突位置之后的第一个空位。
  1. [G7-样题-20]如果哈希表足够大,哈希函数确定后,不会产生冲突。() {{ select(6) }}
  • 正确
  • 错误
  1. [G7-2312-22]某个哈希表键值 xx 为整数,为其定义哈希函数 H(x)=x%pH(x)=x\%p,则 pp 选择素数时不会产生冲突。() {{ select(7) }}
  • 正确
  • 错误
  1. [G8-2312-20]如果待查找的元素确定,只要哈希表的大小不小于查找元素的个数,就一定存在不会产生冲突的哈希函数。() {{ select(8) }}
  • 正确
  • 错误
  1. [G7-2403-22]某 NN 个表项的哈希表,在发生哈希函数冲突时采用向后寻找空位的方法解决冲突。其查找操作的平均时间复杂度为 O(1)O(1),即使当该哈希表的每个表项都有元素时,查找操作的平均时间复杂度仍为 O(1)O(1)。() {{ select(9) }}
  • 正确
  • 错误
  1. [G8-2403-20]为解决哈希函数冲突,在哈希表项内设置链表存储该项内的所有冲突元素,则该哈希表内查找元素的最差时间复杂度为 O(1)O(1)。() {{ select(10) }}
  • 正确
  • 错误