| Abstract Data Type | 
| Queue | 
| Class | 
| (1) | _____ | 
Contiguous implementations are always preferred to linked implementations. | 
| (2) | _____ | 
C++ templates are used to implement "generic" ADTs. | 
| (3) | _____ | 
A contiguous implementation of a List is an array. | 
Queue
    class:
    
class Queue
{   
    public:
	Queue();
	// Returns and removes the front item from the Queue 
	int dequeue();
        // Add the item x onto the rear of the Queue
	void enqueue(int x);	
    private: 
        int space[10];  
        int front, rear, size, count;              
};
    
and the following partial implementation of the Queue
class:
Queue::Queue()
{
    size  = 10;
    front = size - 1; 
    rear  = size - 1; 
    count = 0; 
}
void Queue::enqueue(int x)
{ 
    if (count == size) 
    {
        cerr << "\n Full \n";
    }
    else
    {
        space[rear] = x;
        count++;
        rear = (rear+1) % size;
    }
}
complete the implementation of the Queue class (i.e., write
the dequeue() method).
Node:
  
class Node
{
  public:
      int     value;
      Node    *next;
}
  
  and the following specification/implementation of a Pew:
  
class Pew
{
  public:
    Pew();
    void pish(int anInt);
  private:
    Node   *last;
}
Pew::Pew()
{
    last  = NULL;
}
void Pew::pish(int anInt)
{
    Node *temp;
    temp = new Node();
    temp->value = anInt;
    temp->next  = last;
    last = temp;
}
  
draw a model of memory that illustrates what happens when the following statements are executed:
Pew *p; p = new Pew(); p->pish(22); p->pish(33); p->pish(44);
Node class:
  
  class Node
  {
    public:
      Node  *next;
      int   data;
  };
  
  His LinkedList class included, among other things,
  two Node pointers, one named head that
  points at the first element in the list and one named tail
  that points at the last element in the list.
  
He was then asked to implement a method for finding the minimum data point in the linked list. He implemented this method as follows:
  int findMinimum(Node *head)
  {
    int  min;
    Node *current;
    min = MAX_INT; // MAX_INT is the largest possible int
    current = head;
    while (current != NULL)
    {
      if (current->data < min) min = current->data;
      current = current->next;
    }
    return min;
  }
  
Not surprisingly, his implementation does not work properly. Explain the problem(s) with his implementation and correct it.
MultiStack class:
const int NUM_STACKS = 5;
const int CAPACITY   = 32;
class MultiStack {
   private:
      int store[NUM_STACKS][CAPACITY];
      int topIndex[NUM_STACKS];
   public:
      MultiStack( void );
      void push( int whichStack, int value );
      int pop( int whichStack );
      bool isEmpty( int whichStack );
}; // class MultiStack
MultiStack::MultiStack( void )
{ 
  for ( int i = 0; i < NUM_STACKS; i++ ) 
    topIndex[i] = 0; 
} 
void MultiStack::push( int whichStack, int value ) 
{
   if ( topIndex[whichStack] == CAPACITY ) return;
   store[whichStack][topIndex[whichStack]] = value;
   topIndex[whichStack]++;
} // push
int MultiStack::pop( int whichStack ) 
{
   if ( topIndex[whichStack] == 0 ) return 0;
   topIndex[whichStack]--;
   return store[whichStack][topIndex[whichStack]];
} // pop
bool MultiStack::isEmpty( int whichStack )
{ 
  return topIndex[whichStack] == 0; 
}
topIndex array represent?
    isFull() method for this class.
    PriorityQueue class for Jobs with 10 
  possible priority levels that
  uses Queues of (pointers to) Jobs:
  
  #include "Underflow.h"    // underflow exception class
  #include "Job.h"          // jobs with associated priorities
  #include "Queue.h"        // queue of (pointers to) jobs
  class PriorityQueue {
     public:
        PriorityQueue( void );
        void enter( Job *aJob );
        Job *leave( void ) throw ( Underflow );
        Job *front( void ) throw ( Underflow );
  
     private: 
        Queue *jobQueue[10]
  };
  
PriorityQueue constructor.
      enter() function. Assume that the 
      Job
      class has a getPriority() operation that returns 
      an integer between 0 (the lowest priority) and 9 (the highest priority).
      leave() function.
      Copyright 2010