Description
In today’s lab we will design and implement the Queue ADT using array.
| quetype.h
#ifndef QUETYPE_H_INCLUDED #define QUETYPE_H_INCLUDED
class FullQueue {}; class EmptyQueue {}; template<class ItemType> class QueType { public: QueType(); QueType(int max); ~QueType(); void MakeEmpty(); bool IsEmpty(); bool IsFull(); void Enqueue(ItemType); void Dequeue(ItemType&); private: int front; int rear; ItemType* items; int maxQue; };
#endif // QUETYPE_H_INCLUDED quetype.cpp
#include “quetype.h”
template<class ItemType> QueType<ItemType>::QueType(int max) { maxQue = max + 1; front = maxQue – 1; rear = maxQue – 1; items = new ItemType[maxQue]; } template<class ItemType> QueType<ItemType>::QueType() { maxQue = 501; front = maxQue – 1; rear = maxQue – 1; items = new ItemType[maxQue]; } |
template<class ItemType> QueType<ItemType>::~QueType()
{ delete [] items; } template<class ItemType> void QueType<ItemType>::MakeEmpty() { front = maxQue – 1; rear = maxQue – 1; } template<class ItemType> bool QueType<ItemType>::IsEmpty() { return (rear == front); } template<class ItemType> bool QueType<ItemType>::IsFull() { return ((rear+1)%maxQue == front); } template<class ItemType> void QueType<ItemType>::Enqueue(ItemType newItem) { if (IsFull()) throw FullQueue(); else { rear = (rear +1) % maxQue; items[rear] = newItem; } } template<class ItemType> void QueType<ItemType>::Dequeue(ItemType& item) { if (IsEmpty()) throw EmptyQueue(); else { front = (front + 1) % maxQue; item = items[front]; } } |
Generate the driver file (main.cpp) where you perform the following tasks. Note that you cannot make any change to the header file or the source file.
| Operation to Be Tested and Description of Action | Input Values | Expected Output |
| • Create a queue of integers of size 5 | ||
| • Print if the queue is empty or not | Queue is Empty | |
| • Enqueue four items | 5 7 4 2 | |
| • Print if the queue is empty or not | Queue is not Empty | |
| • Print if the queue is full or not | Queue is not full | |
| • Enqueue another item | 6 | |
| • Print the values in the queue (in the order the values are given as input) | 5 7 4 2 6 | |
| • Print if the queue is full or not | Queue is Full | |
| • Enqueue another item | 8 | Queue Overflow |
| • Dequeue two items | ||
| • Print the values in the queue (in the order the values are given as input) | 4 2 6 | |
| • Dequeue three items | ||
| • Print if the queue is empty or not | Queue is Empty | |
| • Dequeue an item | Queue Underflow | |
| • Take an integer n from the user as input and use a queue to print binary values of each integer from 1 to n. Here is how it can be done.
o Create an empty queue o Enqueue the first binary number “1” to the queue. o Now run a loop for generating and printing n binary numbers. ▪ Dequeue and print the value. ▪ Append “0” at the dequeued value and enqueue it. ▪ Append “1” at the dequeued value and enqueue it. |
10 | 1
10 11 100 101 110 111 1000 1001 1010 |




