package hw5.problem1; import java.util.LinkedList; import java.util.List; /** * IntQueue1 is our first implementation of a basic first-in, first-out queue * for Integers. *

* * An IntQueue can be described as [n1, n2, ..., n_k], where n1 is the * least-recently-added item in the queue and is the next item to be * removed. n_k is the most-recently-added and will be the last of the * current elements to be removed. *

* * An IntQueue can also be described constructively, with the append operation, * ':', such that [n1, n2, ..., n_k] : n_k+1 is the result of enqueing n_k+1 * at the end of the queue. * * @author Krysta Yousoufian */ public class IntQueue1 { // This class represents a queue as a linked list where the front of // the list corresponds to the front of the queue. // Normally, your abstraction function and representation invarant would go // here.... List entries; /** * @effects constructs an empty queue */ public IntQueue1() { entries = new LinkedList(); checkRep(); } /** * Enqueue an item * @param entry item to be added to the queue * @modifies this * @effects places entry at the end of the queue * @throws IllegalArgumentException if entry is null */ public void enqueue(Integer entry) { if (entry == null) { throw new IllegalArgumentException("entry cannot be null"); } entries.add(entry); checkRep(); } /** * Dequeue an item * @requires size() > 0 * @modifies this * @effects removes the item at the front of the queue * @return the item that was first in the queue */ public Integer dequeue() { Integer front = entries.remove(0); checkRep(); return front; } /** * See the next item without removing it * @requires size() > 0 * @return the item currently first in the queue */ public Integer front() { return entries.get(0); } /** * * @return number of elements in the queue */ public int size() { return entries.size(); } /** * * @return size() == 0 */ public boolean isEmpty() { return entries.isEmpty(); } public void checkRep() { // If I gave this to you, you wouldn't have the fun of figuring out the // rep invariant for yourself :) } }