CSci 2101: Priority Queue

JUnit Test code for PriorityQueue


import static org.junit.Assert.*;
import java.util.NoSuchElementException;
import org.junit.Test;

public class TestPriorityQueue {
	@Test
	public void TestEmptyQueue() {
		OurQueue<String> queue = new OurPriorityQueue<String>();
		assertTrue(queue.isEmpty());
		assertEquals(0,queue.size());
	}
	
	@Test
	public void TestNonEmptyQueue() {
		OurQueue<String> queue = new OurPriorityQueue<String>();
		queue.add("kiwi");
		assertFalse(queue.isEmpty());
		assertEquals(1,queue.size());
	}	
	
	@Test(expected=NoSuchElementException.class)
	public void TestElementEmptyQueue(){
		OurQueue<String> queue = new OurPriorityQueue<String>();
		queue.element();
	}
	
	@Test(expected=NoSuchElementException.class)
	public void TestRemoveFromEmptyQueue(){
		OurQueue<String> queue = new OurPriorityQueue<String>();
		queue.remove();
	}	
	
}

OurQueue interface



/**
 * A collection that typically stores its elements in a FIFO
 * (first-in-first-out) manner
 * Modeled after JCF Queue interface
 *
 * @author Elena Machkasova for CSCi 2101 summer 2010
 *
 * @param <E> - the type of elements it holds
 */
public interface OurQueue<E> extends Iterable<E> {
	/**
	 * Returns the number of elements in this queue.
	 * 
	 * @return the size of the queue
	 */
	public int size();
	
	/**
	 * Returns true if this collection contains no elements, false 
	 * otherwise.
	 * 
	 * @return true if this collection contains no elements, false 
	 * otherwise.
	 */
	public boolean isEmpty();
	
	/**
	 * Retrieves, but does not remove, the head of this queue. 
	 * Throws an exception if this queue is empty. 
	 * 
	 * @return the head of this queue. 
	 * @throws NoSuchElementException - if this queue is empty.
	 */
	public E element();
	
	/**
	 * Adds an element to the end of the queue
	 * 
	 * @param element - the element to be added to the queue
	 */
	public void add(E element);
	
	/**
	 * Retrieves and removes the head of this queue. 
	 * Throws an exception if this queue is empty. 
	 * 
	 * @return the head of this queue
	 * @throws NoSuchElementException - if this queue is empty.
	 */
	public E remove();
	
	/**
	 * Removes all of the elements from this queue making it empty.
	 */
	public void clear();
	
}

OurPriorityQueue class


import java.util.Iterator;
import java.util.NoSuchElementException;

/**
 * 
 * The class implements a min-priority queue, i.e. smaller numbers 
 * have higher priority. For instance, if the queue contains 
 * 2, 4, 1, then 1 is returned first, then 2, then 4. 
 * The smallest element in the queue is called the head of the queue. 
 * If the queue contains several elements with the same minimal value,
 * any one of them may play the role of the head. 
 *  
 * Elements inserted in the the queue must implement Comparable interface.
 * They are ordered based on the ordering determined by their 
 * compareTo method. 
 *
 * @param <E> - type of elements in the queue. Must implement Comparable<E>
 */
public class OurPriorityQueue<E extends Comparable<E>> implements OurQueue<E>{
	private Node firstNode;
	
    /**
     * Returns true if this list contains no elements, 
     * false otherwise
     * @return true if this list contains no elements, 
     * false otherwise
     */
    public boolean isEmpty(){
        return false;
    }
    
    /**
     * Returns the number of elements in this queue. 
     * @return the number of elements in this queue
     */
    public int size() {  
    	return 0;
    }
	
	/**
	 * Inserts the specified element at its position in the
	 * priority queue. The position is determined by 
	 * compareTo method: the element e is placed after all
	 * queue elements that are smaller than e based on 
	 * compareTo and before all elements that are >= e. 
	 * 
	 * @param e - the element to be added to the queue
	 */
	public void add(E e) {
	}
	
	/**
	 * Retrieves and removes the firstNode of this queue. 
	 * Throws:
	 * NoSuchElementException - if this queue is empty
	 * 
	 * @return - the head of the queue
	 * @throws NoSuchElementException - if this queue is empty
	 */
	public E remove() {
		return null;
	}
	
	/**
	 * Retrieves but does not remove the head of this queue. 
	 * Throws:
	 * NoSuchElementException - if this queue is empty
	 * 
	 * @return - the head element of the queue
	 * @throws NoSuchElementException - if this queue is empty
	 */
	public E element() {
		return null;
	}
	
    /**
     * Removes all elements from the queue. 
     * This queue will be empty after this call returns.
     * @return
     */
    public void clear() {
    	
    }
	
    private class Node {
        public E item;
        public Node next;
        
        public Node(E newItem, Node nextNode) {
                item = newItem;
                next = nextNode;
        }       
        
    }
    
	public Iterator<E> iterator() {
		return new PriorityQueueIterator();
	}
	
	private class PriorityQueueIterator implements Iterator<E> {

		@Override
		public boolean hasNext() {
			// TODO Auto-generated method stub
			return false;
		}

		@Override
		public E next() {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public void remove() {
			// TODO Auto-generated method stub
			
		}
		
		
	}
}


CSci 2101 course web site.