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

C++ Queue - Please check my code and see if im doing Queue correctly. Make any c

ID: 3734420 • Letter: C

Question

C++ Queue - Please check my code and see if im doing Queue correctly. Make any corrections and make sure it runs efficentely. I will rate thumbs up if you revise it!

I am new too Queue's so please be as thorough as you can! Ill be testing this program later. so i need to make sure its running correctly now.


/////////////////////////////////////////////////////////////////////// Main.cpp file /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <iostream>

/////////////////////////////////////////////////////////////////////////////////////////////////// myQueue.h file //////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef MYQUEUE_H

Explanation / Answer

Hi I go through your code. You have queued correctly. This is the right way to make queues. I have tested it. Its looking a proper code. I just formated your code accourding to C++ standards. You can go ahead with following code.

myQueue.h file :-

#ifndef MYQUEUE_H

#define MYQUEUE_H

#include <cstdlib>

  

namespace myqueue

{

  

enum QUEUE_ERRORS

{ QUEUE_FULL, QUEUE_EMPTY };

  

template < typename T >

struct node

{

  

T data;

  

node * next;

  

node (const T & data)

{

  

this->data = data;

  

next = NULL;

  

}

};

  

template < typename T >

class myQueue

{

  

public:

myQueue (size_t cap = 10);

  

~myQueue ();

  

myQueue (const myQueue < T > &other);

  

myQueue < T > &operator= (const myQueue < T > &other);

  

myQueue < T > &operator<< (const T & data);

  

myQueue < T > &operator>> (T & data);

  

void enqueue (const T & data);

  

T dequeue ();

  

T peek ();

  

bool full ();

  

bool empty ();

  

size_t size ();

  

void resize ();

  

void clear ();

  

private:

node < T > *head, *tail;

  

size_t mySize, myCapacity;

  

void copy (const myQueue < T > &other);

  

void nukem (node < T > *&ptr);

  

};

  

template < typename T >

myQueue < T >::myQueue (size_t cap)

{

  

myCapacity = cap;

  

mySize = 0;

  

head = tail = NULL;

  

}

template < typename T >

myQueue < T >::~myQueue ()

{

  

nukem (head);

  

head = tail = NULL;

  

mySize = myCapacity = 0;

  

}

template < typename T >

myQueue < T >::myQueue (const myQueue < T >

&other)

{

  

copy (other);

  

}

template < typename T >

myQueue < T > &myQueue <

T >::operator= (const myQueue < T > &other)

{

  

if (this != &other)

  

{

nukem (other);

copy (other);

  

}

  

return *this;

  

}

  

template < typename T >

myQueue < T > &myQueue <

T >::operator<< (const T & data)

{

  

enqueue (data);

  

}

template < typename T >

myQueue < T > &myQueue <

T >::operator>> (T & data)

{

  

data = dequeue ();

  

}

template < typename T >

void myQueue <

T >::enqueue (const T & data)

{

  

if (full ())

  

throw QUEUE_FULL;

  

if (empty ())

  

head = tail = new node < T > (data);

  

else

  

{

tail->next = new node < T > (data);

tail = tail->next;

  

}

  

++mySize;

  

}

  

template < typename T >

T myQueue < T >::dequeue ()

{

  

if (empty ())

  

throw QUEUE_EMPTY;

  

node < T > *ptr = head;

  

T data = head->data;

  

head = head->next;

  

delete ptr;

  

--mySize;

  

return data;

  

}

  

template < typename T >

T myQueue < T >::peek ()

{

  

if (empty ())

  

throw QUEUE_EMPTY;

  

return head->data;

  

}

  

template < typename T >

bool myQueue < T >::full ()

{

  

return mySize == myCapacity;

  

}

  

template < typename T >

bool myQueue < T >::empty ()

{

  

return !mySize;

  

}

  

template < typename T >

size_t myQueue < T >::size ()

{

  

return mySize;

  

}

  

template < typename T >

void myQueue < T >::resize ()

{

  

}

template < typename T >

void myQueue < T >::clear ()

{

  

nukem (head);

  

head = tail = NULL;

  

mySize = 0;

  

}

template < typename T >

void copy (const myQueue < T > &other)

{

  

for (node < T > *ptr = other.head; ptr; ptr = ptr->next)

  

enqueue (ptr->data);

  

}

  

template < typename T >

void myQueue < T >::nukem (node < T > *&ptr)

{

  

if (ptr)

  

nukem (ptr->next);

  

ptr->data = T ();

  

delete ptr;

  

}

};

#endif // MYQUEUE_H

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote