Skip to content

数据结构每日一题 2020 Sep#

目录#

1. Week 3#

1.1. Tue#

若二维数组arr[1..M,1..N]的首地址为base,数组元素按列存储且每个元素占用K个存储单元,则元素arr[i,j]在该数组空间的地址为 [厦门大学-903-2015] A.base+((i-1)M+j-1)K B.base+((i-1)N+j-1)K C.base+((j-1)M+i-1)K D.base+((j-1)N+i-1)K

答案 答案:C
解析:二维数组arr[1..M,1..N]的元素可以按行存储,也可以按列存储。按列存储时,元素的排列次序为,先是第一列的所有元素,然后是第二列的所有元素,最后是第N列的所有元素。每一列的元素则按行号从小到大依次排列。因此,对于元素arr[i,j],其存储位置如下计算:先计算其前面j-1列上的元素总数,为(j-1)*M,然后计算第j列上排列在arr[i,j]之前的元素数目,为i-1,因此arr[i,j]的地址为base+((j-1)*M+i-1)*K。

1.2. Wed#

数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为 [浙江理工大学-991-2011]

A.r-f

B.(n+f-r)% n

C.n+r-f

D.(n+r-f)% n

答案 答案:D
解析:当r>f时,个数x = r - f ,当r < f时,x = n + r - f ,二者可以统一为D选项。

2. Week 4#

2.1. Wed#

设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为26的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是 [武汉科技大学-856-2013]

A.8

B.3

C.2

D.9

答案 答案:B
解析:H(15)=15%11=4
H(38)=38%11 = 5
H(61)=61%11 = 6
H(84)=84%11 = 7
H(26)=26%11=4
关键字26的结点和关键字为15 的结点都放在哈希表4的位置,产生冲突
利用二次探测再散列法公式H(key)=(key+dii)%11 dii=1^2 ,-(1^2),2^2,-(2^2).....
当dii取1^2时:
H(26)=(26+1^2)%11 = 5
和 H(38)=38%11 =5 冲突
当dii取-1^2时:H(26)=(26-(1^2))%11 = 3 不与其他关键字的哈希地址冲突,故将关键字26的结点放在表3位置。

2.2. Sun#

在有N个叶子节点的哈夫曼树中,其节点总数为 [郑州大学]

A. 不确定

B. 2N-1

C. 2N+1

D. 2N

答案 答案:B
解析:哈弗曼树也是二叉树,而且树中只有叶子结点跟度为2的结点,由二叉树的性质可得:度为2的结点数量等于叶子结点数量-1,因此结点总数为n+n-1。
Back to top