001package cnslab.cnsnetwork;
002import cnslab.cnsmath.*;
003import java.util.Map;
004import java.util.TreeSet;
005import java.util.Iterator;
006import java.util.Arrays;
007import java.util.PriorityQueue;
008import java.io.PrintStream;
009/**
010 * Implementation of FiboQueue
011 * 
012 * @author  Yi Dong
013 */
014public class FiboQueue<T extends Comparable<T> > implements Queue<T>
015{
016        private FibonacciHeap<T> treeQueue = new FibonacciHeap<T>();
017
018        /**
019         * @see cnslab.cnsnetwork.Queue#deleteItem(java.lang.Comparable) deleteItem
020         */
021        public synchronized void deleteItem(T item) {
022
023//              if(item.compareTo( treeQueue.peek())!=0) throw new RuntimeException("delete non fist item (input):"+item+" first item"+treeQueue.peek());
024                if(item.compareTo((treeQueue.peekMin())) !=0 ) 
025                {
026                        System.out.println("not the same");
027//                      treeQueue.delete(new FibonacciHeapNode<T>(item));
028                }
029                else
030                {
031                        treeQueue.popMin();
032                }
033        }
034
035        /**
036         * @see cnslab.cnsnetwork.Queue#insertItem(java.lang.Comparable) insertItem
037         */
038        public synchronized void insertItem(T item) {
039                treeQueue.add(item);
040        }
041
042
043        /**
044         * @see cnslab.cnsnetwork.Queue#firstItem() firstItem
045         */
046        public synchronized T firstItem() {
047                return treeQueue.peekMin();
048        }
049
050        /** 
051         * show all the elements in the Queue in order 
052         */
053        public synchronized void show(PrintStream p) {
054//              System.out.println(treeQueue.toString());
055        }
056
057        public synchronized String show() {
058//              System.out.println(treeQueue.toString());
059                return "";
060        }
061
062        public synchronized void clear(){
063//              treeQueue.clear();
064        }
065}