我跟随this code实施优先级队列。我不喜欢的是,当在main方法中使用它时,用户必须调用heap.Push和heap.Pop。让我的优先级队列包含堆而不是将其包装在堆中对我来说更有意义。我在考虑这个错误,或者示例代码是否显示在Golang中执行此操作的正确方法?
答案 0 :(得分:1)
我创建了一个包装类,它调用heap.Push和heap.Pop。
package huffman
import "container/heap"
type RunePriorityQueue struct {
queue PriorityQueue
}
func (RunePriorityQueue) NewRunePriorityQueue() *RunePriorityQueue {
newRPQ := new(RunePriorityQueue)
heap.Init(&newRPQ.queue)
return newRPQ
}
func (rpq *RunePriorityQueue) Push(item *Item) {
heap.Push(&rpq.queue, item)
}
func (rpq *RunePriorityQueue) Pop() *Item {
return heap.Pop(&rpq.queue).(*Item)
}