c++ - Copy queue items into another class object -


when display items in queue use while loop

while (!queue.isemptyqueue()) {     cout << queue.front() << " ";     queue.deletequeue(); } 

the items gone because of deletequeue() function cannot display again. how can create copy of queue?

i tried code below gives me errors.

queue1 = queue; while (!queue1.isemptyqueue()) {     cout << queue1.front() << " ";     queue1.deletequeue(); } 

i using linkedqueue.h

#include<assert.h>  template <class type> struct nodetype {     type info;     nodetype<type> *link; };  template <class type> class linkedqueuetype  //: public queueadt<type> {     public:         const linkedqueuetype<type>& operator=(const         linkedqueuetype<type>&);         bool isemptyqueue() const;         bool isfullqueue() const;         void initializequeue();         type front() const;         type back() const;         void addqueue(const type& queueelement);         void deletequeue();         linkedqueuetype();         linkedqueuetype(const linkedqueuetype<type>& otherqueue);         ~linkedqueuetype();     private:         nodetype<type> *queuefront;          nodetype<type> *queuerear;  };  template <class type> bool linkedqueuetype<type>::isemptyqueue() const {     return(queuefront == null); }  template <class type> bool linkedqueuetype<type>::isfullqueue() const {     return false; }   template <class type> void linkedqueuetype<type>::initializequeue() {     nodetype<type> *temp;     while (queuefront!= null)      {         temp = queuefront;          queuefront = queuefront->link;          delete temp;      }     queuerear = null;  }   template <class type> void linkedqueuetype<type>::addqueue(const type& newelement) {     nodetype<type> *newnode;     newnode = new nodetype<type>;      newnode->info = newelement;      newnode->link = null;      if (queuefront == null)      {         queuefront = newnode;         queuerear = newnode;     }     else      {         queuerear->link = newnode;         queuerear = queuerear->link;     } }  template <class type> type linkedqueuetype<type>::front() const {     assert(queuefront != null);     return queuefront->info; }  template <class type> type linkedqueuetype<type>::back() const {     assert(queuerear!= null);     return queuerear->info; }   template <class type> void linkedqueuetype<type>::deletequeue() {     nodetype<type> *temp;     if (!isemptyqueue())     {     temp = queuefront;      queuefront = queuefront->link;      delete temp;      if (queuefront == null)      queuerear = null;      }     else     cout << "cannot remove empty queue" << endl; }  template<class type> linkedqueuetype<type>::linkedqueuetype() {     queuefront = null;      queuerear = null;  }   template <class type> linkedqueuetype<type>::~linkedqueuetype() {     initializequeue(); } 

if want copy queue, copy constructor / assignment operator should have, martin said.

but if want items still there after go through queue, queue missing way tell how many items in queue.

you can cout each item , move of queue, number of times.

either way, of these missing queue implementation. copy constructor, assignment operator, size function.

(and technically, queue doesn't have functionality access item. wouldn't call queue missing functionality, call linked list missing functionality.)


Comments