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


    题目:用两个栈实现一个队列。请实现它的两个函数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. }








  • 相关阅读:
    javascript对象继承的实现
    浏览器兼容问题汇总<转>
    DOM笔记
    Ajax日记
    学习态度
    项目1
    导航项目-整体布局
    有关布局
    导航项目开始
    windows 服务 定时程序 跑不出数据
  • 原文地址:https://www.cnblogs.com/zhuzhenfeng/p/4663604.html
Copyright © 2020-2023  润新知