Quiero implementar una clase de cola de prioridad. Cuando se agrega un elemento con una prioridad más alta, se lo coloca al principio de la cola y se agrega al final de la cola.Pregunta heredando de la lista (de T) clase
simples pocas líneas de código
Public Class PriorityQueue(Of T)
Inherits List(Of T)
Private _list As New List(Of T)
Public Sub Enque(ByVal item As T, Optional ByVal pushToFront As Boolean = False)
If pushToFront = True Then
_list.Insert(0, item)
Else
_list.Add(item)
End If
End Sub
Public Function Deque() As T
If _list.Count <> 0 Then
Dim item As T = _list(0)
_list.RemoveAt(0)
Return item
Else
Throw New InvalidOperationException
End If
End Function
End Class
Ahora la función de la llamada trata de encontrar los elementos en la cola de este modo ....
dim _q as new PriorityQueue(Of integer)
_q.Enque(1)
_q.Enque(2)
msgbox(_q.Count())
.....
¡el programa imprime 0! Si agrega una propiedad Count(), entonces todo está bien. Hubiera pensado que la clase heredada debería llamar a la función de Cuenta de la clase base. Tenga en cuenta que Count se muestra en intellisense incluso si no tengo implementación en la clase derivada.
Marque como código: "dim _q como nuevo PriorityQueue (Of integer) _q.Enque (1) _q.Enque (2) msgbox (_q.Count())" –