2016-12-14 63 views
0

我目前正在使用泛型类型实现二项式最小优先级队列。具有泛型类型的二项式最小优先级队列

我已经给出了以下binomialminheap.java:

class BinomialMinHeap <K extends Comparable<? super K>, P> 
{ 

    public static class Entry <K, P> { 
     private P priority; 
     private K key; 
     private Node<P, K> node; 

     private Entry (K k, P p) 
     { 
      priority = p; 
      key= k; 
     } 

     public P priority() { return priority; } 
     public K key() { return key; } 
    } 

    private static class Node <K, P> { 

     private Entry<K, P> entry; 

     private Node<K, P> parent; 
    . 
     private Node<K, P> child; 

     private Node<K, P> sibling; 

     private int degree; 

     private Node (Entry<K, P> e) 
     { 
      entry = e; 
      e.node = this; 
     } 

     private P priority() 
     { 
      return entry.priority; 
     } 
    } 
} 

正如你看到的我有泛型类型P和K.这里的问题是,我不知道如何实现泛型类型分为我的二进制堆。 “Entry”,“Node”和“BinomialHeap”如何一起工作?

我开始用下面的构造函数和一些方法:

private Node<P,D> Nodes; 
    private int size; 

    public BinomialMinHeap() 
    { 
     Nodes = null; 
     size = 0; 
    } 

    public boolean isEmpty() 
    { 
     return Nodes == null; 
    } 

    public int size() 
    { 
     return size; 
    } 

我要补充以下方法:

boolean contains (Entry<K, P> e) 
Entry<K, P> insert (K k, P p) 
boolean changePriority (Entry<K, P> e, P p) 
Entry<K, P> minimum() 
Entry<K, P> extractMinimum() 
boolean remove (Entry<K, P> e) 

回答