Fixato bug e implementato alcune funzioni.
This commit is contained in:
@@ -4,11 +4,12 @@ import position.Position;
|
||||
import priorityqueue.Entry;
|
||||
import priorityqueue.MyEntry;
|
||||
import priorityqueue.PriorityQueue;
|
||||
import stack.NodeStack;
|
||||
import tree.binarytree.heap.ArrayListCompleteBinaryTree;
|
||||
import tree.binarytree.heap.CompleteBinaryTree;
|
||||
import utility.DefaultComparator;
|
||||
|
||||
import java.security.InvalidKeyException;
|
||||
import exceptions.InvalidKeyException;
|
||||
import java.util.Comparator;
|
||||
|
||||
|
||||
@@ -28,7 +29,7 @@ public class HeapPriorityQueue<K,V> implements PriorityQueue<K,V> {
|
||||
comp = c;
|
||||
}
|
||||
|
||||
//elementi gia' ordinati
|
||||
|
||||
public HeapPriorityQueue (K k[], V v[], Comparator<K> C){
|
||||
heap = new ArrayListCompleteBinaryTree<Entry<K,V>>();
|
||||
comp = C;
|
||||
@@ -37,11 +38,22 @@ public class HeapPriorityQueue<K,V> implements PriorityQueue<K,V> {
|
||||
|
||||
} else {
|
||||
|
||||
NodeStack<ArrayListCompleteBinaryTree.BTPos<Entry<K, V>>> s = new NodeStack<ArrayListCompleteBinaryTree.BTPos<Entry<K, V>>>();
|
||||
for (int i = 0; i < k.length; i++) {
|
||||
heap.add(new MyEntry<K, V>(k[i],v[i])); // gia' ordinati. evitiamo l'upheap
|
||||
ArrayListCompleteBinaryTree.BTPos<Entry<K, V>> t = (ArrayListCompleteBinaryTree.BTPos<Entry<K, V>>) heap.add(new MyEntry<K, V>(k[i], v[i]));
|
||||
s.push(t);
|
||||
}
|
||||
|
||||
for (;!s.isEmpty();){
|
||||
ArrayListCompleteBinaryTree.BTPos<Entry<K, V>> t = s.pop();
|
||||
if (!heap.isExternal(t))
|
||||
downHeap(t);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void setComparator(Comparator<K> c) throws IllegalStateException {
|
||||
|
||||
Reference in New Issue
Block a user