...
Run Format

Source file src/container/heap/example_intheap_test.go

Documentation: container/heap

  // Copyright 2012 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  // This example demonstrates an integer heap built using the heap interface.
  package heap_test
  
  import (
  	"container/heap"
  	"fmt"
  )
  
  // An IntHeap is a min-heap of ints.
  type IntHeap []int
  
  func (h IntHeap) Len() int           { return len(h) }
  func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] }
  func (h IntHeap) Swap(i, j int)      { h[i], h[j] = h[j], h[i] }
  
  func (h *IntHeap) Push(x interface{}) {
  	// Push and Pop use pointer receivers because they modify the slice's length,
  	// not just its contents.
  	*h = append(*h, x.(int))
  }
  
  func (h *IntHeap) Pop() interface{} {
  	old := *h
  	n := len(old)
  	x := old[n-1]
  	*h = old[0 : n-1]
  	return x
  }
  
  // This example inserts several ints into an IntHeap, checks the minimum,
  // and removes them in order of priority.
  func Example_intHeap() {
  	h := &IntHeap{2, 1, 5}
  	heap.Init(h)
  	heap.Push(h, 3)
  	fmt.Printf("minimum: %d\n", (*h)[0])
  	for h.Len() > 0 {
  		fmt.Printf("%d ", heap.Pop(h))
  	}
  	// Output:
  	// minimum: 1
  	// 1 2 3 5
  }
  

View as plain text