2016-12-14 12 views
0

В настоящее время я реализую очередь приоритетов мини-кучи Binomial с типичными типами.Binomial Min-Heap Priority Queue с общими типами

Я дал следующую 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) 

ответ

0

Лучше сначала пройти через некоторые общие реализации алгоритма, то вы получите представление о том о реализации общих алгоритмов. Например, следуют некоторые общие алгоритмы сортировки.

Heap Sort

Insertion Sort

Selection Sort

Merge Sort

Quick Sort

 Смежные вопросы

  • Нет связанных вопросов^_^