用兩個棧實現一個佇列
阿新 • • 發佈:2019-02-11
棧的順序是先進後出,佇列則是先進先出。假設兩個棧分別為stack1和stack2,入佇列相當於在stack1中入棧,出佇列時將stack1中的元素全部搬到stack2中,然後在stack2中出棧,如果stack2中沒有元素了,就去stack1中搬元素。
template <typename T> class CQueue { public: CQueue(); ~CQueue(); void push_queue(const T& element); void pop_queue(); private: stack<T> stack1; stack<T> stack2; }; template <typename T> void CQueue<T>::push_queue(const T& element) //入佇列 { stack1.push(element); } template <typename T> void CQueue<T>::pop_queue() //出佇列 { if(stack2.size() <= 0) { while(stack1.size() > 0) { T& data = stack1.top(); stack1.pop(); stack2.push(data); } } if(stack2.size() == 0) { cout<<"queue is empty!!!"<<endl; return NULL; } stack2.pop(); }