Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

A queue class is first in / first out. It acts as a buffer. If you enqueue 1, 2

ID: 3534030 • Letter: A

Question

A queue class is first in / first out. It acts as a buffer. If you enqueue 1, 2 and 3, then you will dequeue 1, 2, and 3 in the same order.

The queue class should have the following methods:

Here is what your main program should be:

// put your includes, and comments here
void main()
{   
   Queue<string> stringQueue;
   stringQueue.enqueue(string("Hello"));
   
   Queue<int> intQueue;
   Queue<double> doubleQueue;
   
   for(int i=2;i<=22;i+=4){
      intQueue.enqueue(i);
      doubleQueue.enqueue(i+0.5);
   }
   
   stringQueue.enqueue(string("World"));
   
   while (!stringQueue.empty())
     cout << stringQueue.dequeue() << endl;
     
   while (!intQueue.empty())
     cout << intQueue.dequeue() << endl;
     
   while (!doubleQueue.empty())
     cout << doubleQueue.dequeue() << endl;
}

Here is the expected output:

Explanation / Answer

#include <stdio.h>

#include <iostream>

#include <string>

using namespace std;


template <class T>

class Queue

{

class Node

{

public:

T key;

Node * next;

Node() : key(-1),next(NULL)

{}

Node (T data) : key(data),next(NULL)

{}

~Node()

{}

};

Node * front;

Node * back;


public:

Queue()

{

front = NULL;

back = NULL;

}

void enqueue(T data);

T dequeue();

bool empty()

{

return (front==NULL);

}

};


template <class T>

void Queue <T> ::enqueue(T data)

{

//cout << "Inserting "<<data<<endl;

Node * newNode = new Node(data);

if(back==NULL)

{

front = back = newNode;

}

else

{

back->next = newNode;

back = back->next ;

}

}


template <class T>

T Queue <T> ::dequeue()

{

if(front)

{

Node * temp = front;

front = front->next;

T val = temp->key;

delete temp;

return val;

}

}

int main()

{

Queue<string> stringQueue;

stringQueue.enqueue(string("Hello"));


Queue<int> intQueue;

Queue<double> doubleQueue;


for(int i=2;i<=22;i+=4){

intQueue.enqueue(i);

doubleQueue.enqueue(i+0.5);

}


stringQueue.enqueue(string("World"));


while (!stringQueue.empty())

cout << stringQueue.dequeue() << endl;


while (!intQueue.empty())

cout << intQueue.dequeue() << endl;


while (!doubleQueue.empty())

cout << doubleQueue.dequeue() << endl;

}