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
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.