я пытаюсь создать двойную хеш-таблицу в vb.net, и я получаю несколько ошибок, которые я не знаю, как решить. надеюсь, вы, ребята, можете мне помочь. проблемы, которые у меня есть, везде, где у меня есть dbnull.value или mod =, я получаю ошибки в редакторе, и я не знаю, как их исправить. положить этот код в VB, чтобы увидеть, что я имею в виду.
вот код:
Public Class DoubleHashing
Class DataItem
Private data As Integer
Public Sub New(ByVal i As Integer)
data = i
End Sub
Public Function getKey() As Integer
Return data
End Function
End Class
Private hashArray() As DataItem
Private arraySize As Integer
Private bufItem As DataItem
Public Sub New(ByVal size As Integer)
arraySize = size
hashArray(arraySize) = New DataItem(arraySize)
Dim bufItem(-1) As DataItem
End Sub
Public Function hashFunc1(ByVal key As Integer) As Integer
Return key Mod arraySize
End Function
Public Function hashFunc2(ByVal key As Integer) As Integer
Return 6 - key Mod 6
End Function
Public Sub insert(ByVal key As Integer, ByVal item As DataItem)
Dim hashVal As Integer = hashFunc1(key) ' hash the key
Dim stepSize As Integer = hashFunc2(key) ' get step size
' until empty cell or -1
While hashArray(hashVal) <> DBNull.Value & hashArray(hashVal).getKey() <> -1
hashVal += stepSize ' add the step
hashVal mod= arraySize ' for wraparound
End While
hashArray(hashVal) = item ' insert item
End Sub
Public Function delete(ByVal key As Integer) As DataItem
Dim hashVal As Integer = hashFunc1(key)
Dim stepSize As Integer = hashFunc2(key) ' get step size
While hashArray(hashVal) <> DBNull.Value
If hashArray(hashVal).getKey() = key Then
Dim temp As DataItem = hashArray(hashVal) ' save item
hashArray(hashVal) = bufItem ' delete item
Return temp ' return item
End If
hashVal += stepSize ' add the step
hashVal mod= arraySize ' for wraparound
End While
Return DBNull.Value
End Function
Public Function find(ByVal key As Integer) As DataItem
Dim hashVal As Integer = hashFunc1(key)
Dim stepSize As Integer = hashFunc2(key)
While hashArray(hashVal) <> DBNull.Value
If hashArray(hashVal).getKey() = key Then
Return hashArray(hashVal)
End If
hashVal += stepSize
hashVal mod= arraySize
End While
Return DBNull.Value
End Function
Конечный класс