题目:用两个栈来实现队列。队列声明如下,请实现他的两个函数,appendTail和deleteHead,分别完成在队列尾部插入结点和在队列的头部删除结点的功能。

template  class CQueue
{public :CQueue(void);~CQueue(void);void appendTail(const T& node);T deleteHead();private:stack stack1;stack stack2;
};



解决:



template void CQueue::appendTail(const T& element)
{stack1.push(element);
}
template void CQueue::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;
}