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
Post a Comment