【加试题】某数据存储算法如下:使用长度为n的一维数组h来存储m个不同整数型数据(m<n),数据的存储位置t根据存储数据的值除n取余计算得到。例如使用长度为11的数组来存储67,45,1 275,119,145,269,64共7个数据,先存储第1个数据67,67 Mod 11=1,在第1位置上没有数据,则存放在第1位置。第2个数据45,45 Mod 11=1,而在第1位置上已存有数据,那么查找下一位置有没有数据,现第2位置上没有数据,则存放在第2位置。在查找空位时如果到了数组最后一个位置还没有空位,则从头继续查找,以此类推……,举例数据存储结果如表所示。
位置
0
1
2
3
4
5
6
7
8
9
10
数据
64
67
45
145
269
119
1275
(1)
若按上述规则,再存储一个数据79,则存储在第 位置。
(2)
当n=97时,实现上述数据存储及相应数据查找的VB程序如下,运行结果如图所示,请在画线处填入合适的代码。
Const n=97
Dim d(0 To 96)As Integer,h(0 To 96)As Integer
Dim m As Integer ‘变量m为数据个数
Private Sub Command1_Click() ‘数据存储
Dim i As Integer,t As Integer
‘从数据库读取数据先存储在数组d中,代码略
List1.Clear
For i=0 To n-1
h(i)=-1 ‘数组元素初始化
Next i
For i=0 To m
①
Do While h(t)<>-1
t=(t+1)Mod l2
Loop
h(t)=d(i)
Next i
For i=0 To n-1
List1.AddItem Str(i)&“:”&Str(h(i))
Next i
End Sub
Private Sub Command2_Click() ‘数据查找
Dim x As Integer,Y As Integer,z As Integer
x=Val(Text1.Text)
y=x Mod n
z=1
Do While ②
z=z+1
y=(y+1)Mod n
Loop
If h(y)=x Then
Label2.Caption=“共查找了”&Str(z)&“次,在第”&,Str(y)&“位置找到”
Else
Label2.Caption=“共查找了”&Str(z)&“次,没有找到”
End If
End Sub
① ②
(3)
数组h中的元素值初始化为-1表示含义是。
答案: 【1】4
【1】t=d(i)Mod n【2】h(y)<>1 And h(y)<>x
【1】没有存储数据