/* File: queue.C

   Implementation of a FIFO stack which is derived
   from our list ADT
*/

#include <stdio.h>
#include <stdlib.h>
#include "queue.h"


/* default constructor */
Queue::Queue() {
}


/* destructor */
Queue::~Queue() {
}


/* add data to the queue */
void Queue::Enqueue(data x) {
   Append(x) ;
}


/* remove data from the queue */
data Queue::Dequeue() {
   position pos ;
   data x ;

   pos = FirstPos() ;
   x = ItemAt(pos) ;
   Delete(pos) ;
   return x ;
}


/* return first element of the queue */
data Queue::Front() {

   return ItemAt(FirstPos()) ;
}


/* Is the queue empty? 1=Yes, 0=No */
int Queue::IsEmpty() {

   return count ? 0 : 1 ; 
}


/* Number of items in the queue */
int Queue::Length() {

   return count ;  
}

