码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer:用两个栈实现队列

时间:2015-07-21 12:00:18      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

题目:用两个栈实现一个队列。请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除结点的功能。队列的声明如下:
  1. template <typename T> class CQueue
  2. {
  3. public:
  4. CQueue(void);
  5. ~CQueue(void);
  6. // 在队列末尾添加一个结点
  7. void appendTail(const T& node);
  8. // 删除队列的头结点
  9. T deleteHead();
  10. private:
  11. stack<T> stack1;
  12. stack<T> stack2;
  13. };
技术分享
技术分享
  1. template<typename T> void CQueue<T>::appendTail(const T& element)
  2. {
  3. stack1.push(element);
  4. }
  5. template<typename T> T CQueue<T>::deleteHead()
  6. {
  7. if(stack2.size()<= 0)
  8. {
  9. while(stack1.size()>0)
  10. {
  11. T& data = stack1.top();
  12. stack1.pop();
  13. stack2.push(data);
  14. }
  15. }
  16. if(stack2.size() == 0)
  17. throw new exception("queue is empty");
  18. T head = stack2.top();
  19. stack2.pop();
  20. return head;
  21. }








剑指offer:用两个栈实现队列

标签:

原文地址:http://www.cnblogs.com/zhuzhenfeng/p/4663604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!