h=H(M),其中H为散列函数,H应该具有的特性包括()
A.给定M,很容易计算h
B.给定h,很容易计算M
C.给定M,不能计算h
D.给定h,不能计算M
E.给定M,要找到另一个输入串M'并满足H(M')=H(M)很难
A.给定M,很容易计算h
B.给定h,很容易计算M
C.给定M,不能计算h
D.给定h,不能计算M
E.给定M,要找到另一个输入串M'并满足H(M')=H(M)很难
给定表(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Oct,Nov,Dec)。设取散列函数H(x)=i/2,其中i为键值中第一个字母在英文字母表中的序号,要求:
dr(61)=6、addr(84)=7.其余地址为空。如用二次探查法解决冲突,关键码值为49的散列地址是()。
A、8
B、3
C、5
D、9
(1)从空二叉树开始逐个插入该数据序列来形成二叉排序树,若希望高度最小,应该选择的序列是()。
A.45,24,53,12,37,96,30
B.37,24,12,30,53,45,96
C.12,24,30,37,45,53,96
D.30,24,12,37,45,96,53
(2)用链接地址法将该数据序列构造哈希表,哈希函数为H(key)=keymod13,则散列地址为1的链中有()个记录。
A.0
B.1
C.2
D.3
已知一个待散列存储的线性表18,34,58,26,75,67,48,81,散列函数为H(k)=k mod 11,若采用线性探测法解决冲突,则平均查找长度为______。若采用链接法解决冲突,则平均查找长度为______。
设散列表的长度为13,散列函数为H(K)=K%13,给定的关键字序列为19,14,23,1,68,20,84,27,55,11,10,79。试画出分别用链地址法和线性探测法解决冲突时所构造的散列表,并求等概率下这两种方法的成功和不成功的平均查找长度。
在地址空间为0~16的散列区中,对以下关键字序列构造两个散列表:
1)用线性探测开放定址法处理冲突;
2)用链地址法处理冲突。
并分别求这两个散列表在等概率情况下查找成功和不成功的平均查找长度。设散列函数为H(key)=i/2,其中i为关键字中第一个字母在字母表中的序号。
散列表A[10]中,若采用线性探查方法解决冲突,则在该散列表上进行等概率成功搜索的平均搜索长度为()。
A、2.60
B、3.14
C、3.71
D、4.33
(1)k1的探查序列:___30___,________,________,________,
(2)k2的探查序列:___28___,________,________,________,
(3)k3的探查序列:________,________,________,________,
请编写函数fun(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,若二维数组中的数据为:
W WWW
S S S S
H H H H
则字符串中的内容应是WSHWSHWSHWSH。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<stdio.h>
define M 3
define N 4
void fun(char (*s)[N],char *b)
{
}
main()
{
char a[100],w[M][N]={{ 'W', 'W', 'W', 'W'},
{'S', 'S', 'S', 'S'},{'H', 'H', 'H', 'H'}};
int i,j;
printf("The matrix:\n");
for(i=0;i<M;i++)
{ for(j=0;j<N;j++)
printf("%3c",w[i][j]);
printf("\n");
}
fun(w,a);
printf("The A string:In");
puts(a);
printf("\n\n");
}