001    /*
002     * Generic Queue Interface
003     * $Id: Queue.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $
004     *
005     * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group.
006     * For more information, see <a href="http://www.ai.mit.edu/projects/cs101/">the
007     * CS101 homepage</a> or email <las@ai.mit.edu>.
008     *
009     * Copyright (C) 1998 Massachusetts Institute of Technology.
010     * Please do not redistribute without obtaining permission.
011     */
012    
013    package cs101.util.queue;
014    
015    import java.util.Enumeration;
016    
017    /**
018     * Generic Queue Interface.  Allows insertion/deletion at either end.
019     * <p>
020     * Copyright (c) 1998 Massachusetts Institute of Technology 
021     *
022     * @author Todd C. Parnell, tparnell@ai.mit.edu
023     * @version $Id: Queue.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $
024     */
025    public interface Queue {
026    
027      public static final int FRONT = 0;
028      public static final int BACK  = 1;
029    
030      /** Returns the number of elements in this. */
031      public int size();
032    
033      /**
034       * Gets the tail object from the queue </B>without</B> removing
035       * it. 
036       */
037      public Object peek();
038    
039      /**
040       * Gets the object from the specified end of the queue
041       * </B>without</B> removing it. 
042       */
043      public Object peek(int end);
044    
045      /** Puts obj into the front the queue. */
046      public void enqueue(Object obj);
047    
048      /** Puts obj into the specified end of the queue. */
049      public void enqueue(Object obj, int end);
050    
051      /** Removes and returns the Object at the tail of the queue. */
052      public Object dequeue();
053    
054      /** Removes and returns the Object at the specified end of the queue. */
055      public Object dequeue(int end);
056    
057      /** Tests whether the queue is empty. */
058      public boolean isEmpty ();
059    
060      /** Returns an Enumeration of the Objects in the queue.<p> 
061       *
062       * <I>Note: Do not modify the queue while enumerating--unpredictable
063       * behavior may result.</I>
064       *
065       * @see java.util.Enumeration
066       */
067      public Enumeration elements();
068          
069    }
070    
071    /*
072     * $Log: Queue.java,v $
073     * Revision 1.1.1.1  2002/06/05 21:56:32  root
074     * CS101 comes to Olin finally.
075     *
076     * Revision 1.1  2000/04/24 22:17:18  nathanw
077     * Bulk reorganization
078     *
079     * Revision 1.12  1999/07/27 16:59:16  las
080     * Updated cs101.util.Queue.java to spell its method peek()
081     *
082     * Revision 1.11  1999/01/21 20:49:19  tparnell
083     * Made Queue.java an interface and added DefaultQueue.java as an implementation.
084     *
085     * Revision 1.10  1998/07/31 21:42:36  tparnell
086     * bugfix
087     *
088     * Revision 1.9  1998/07/31 21:39:01  tparnell
089     * added size() method
090     *
091     * Revision 1.8  1998/07/24 17:19:33  tparnell
092     * Placate new javadoc behavior
093     *
094     */