⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01

📁 train reservation in visual basic
💻
字号:
Imports System.Collections.Generic

Public Class PriorityQueue2
    'Binary Heap as per:
    'http://www.brpreiss.com/books/opus4/html/page354.html
    'This turned out to be key for an efficient search.


    Private mList As List(Of PuzzleState)
    Private mCount As Integer = -1
    Private mCompare As PuzzleComparer

    Public Sub New()
        mList = New List(Of PuzzleState)
        mCompare = New PuzzleComparer
    End Sub

    Public Sub Push(ByVal x As PuzzleState)
        mList.Add(x)
        mCount += 1
        Dim i As Integer = mCount
        'if greater than child, move child up.... iteratively until no longer greater than child
        Do While i > 0 And mCompare.Compare(mList((i - 1) \ 2), x) > 0
            mList(i) = mList((i - 1) \ 2)
            i = (i - 1) \ 2
        Loop
        'Drop in where last child was moved from
        mList(i) = x
    End Sub


    Public Function Pop() As PuzzleState
        'Pop the lowest cost off the list (always at the root)
        Dim Result As PuzzleState = mList(0)
        Dim Last As PuzzleState = mList(mCount)

        mList.RemoveAt(mCount)
        mCount -= 1
        'List may be empty now.
        If mCount < 0 Then Return Result

        Dim i As Integer = 0
        Do While (2 * i + 1) < mCount + 1
            Dim Child As Integer = 2 * i + 1  'left child
            If (Child + 1 < mCount + 1) AndAlso (mCompare.Compare(mList(Child + 1), mList(Child)) < 0) Then
                Child += 1  'We want the right child instead
            End If
            If mCompare.Compare(Last, mList(Child)) < 0 Then
                Exit Do
            End If
            mList(i) = mList(Child)
            i = Child
        Loop
        mList(i) = Last

        Return Result


    End Function

    



    Private Function OnCompare(ByVal x As Integer, ByVal y As Integer) As Integer
        Dim psx As PuzzleState = DirectCast(mList(x), PuzzleState)
        Dim psy As PuzzleState = DirectCast(mList(y), PuzzleState)
        Return mCompare.Compare(psx, psy)


    End Function



End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -