zoukankan      html  css  js  c++  java
  • 面试题9:用两个栈实现队列

    一.题目

    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTaildeleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。

    二.思路

    使用两个栈stack1和stack2,若添加元素则直接压入栈stack1中;若删除元素,则要分情况:

    1. 如果栈stack2为空,则把栈stack1中的元素弹出压入栈stack2中,此时从栈stack2中弹出数据的顺序符合队列的特点(先进先出)
    2. 如果栈stack2非空,则直接弹出栈stack2顶部元素即可

    三.代码

    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){
        stack.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;    
    }

    四.本题考点

    1. 考查应聘者对栈和队列的理解
    2. 考查应聘者写与模板相关的代码的能力
    3. 考查应聘者分析复杂问题的能力。应聘者能否通过具体的例子分析问题,通过画图的手段把抽象的问题具体化,从而解决这个相对复杂的问题,是能否顺利通过面试的关键。
  • 相关阅读:
    iOS离屏渲染简书
    iOS Waxpatch项目(动态更新)
    waxpatch修改任意类的用法
    ios waxpatch lua语法
    ios WaxPatch热更新原理
    WaxPatch中demo注意问题
    ios wax热更新之安装wax(xcode7.3.1)
    获取第三方键盘高度(包括自带键盘高度)
    25个增强iOS应用程序性能的提示和技巧(高级篇)(2)
    JS基础_一元运算符
  • 原文地址:https://www.cnblogs.com/ovs98/p/9876260.html
Copyright © 2011-2022 走看看