用两个栈实现队列
这个没什么好说的,原理就是先放入一个栈,要取数时先把数据全部放入到另一个栈,再出栈。
template <typename T> class CQueue { public: CQueue(void); ~CQueue(void); void appendTail(const T& node); T deleteHead(); private: stack<T> stack1; stack<T> stack2; }; template <typename T> void CQueue<T>::appendTail(const T& element) { stack1.push(element); } template <typename T> T CQueue<T>::deleteHead() { if(stack2.size() <=0) { while(stack1.size() > 0) { T& data = stack1.top();//注意这里的& stack1.pop(); stack2.push(data); } } if( stack2.size() == 0) throw new exception("queue is empty"); T head = stack2.top(); stack2.pop(); return head; }

浙公网安备 33010602011771号