刷题-栈和队列

Posted on   AcTourist  阅读(26)  评论(0编辑  收藏  举报

一、

  因为有太多遗忘的东西了,所以做题速度会很慢

  现在理解题目,把题目理解好了,然后去看题解,看完题解,在去搜索相关知识点进行补充。

二、题目

 

 

三、理解

  栈:先进后出;队列:先进先出

  要满足题目的要求,我们要把栈底输出出来,我们可以把栈倒着输出,就可以满足队列的先进先出。

  所以我们需要两个栈来,第一个栈是进栈,第二个栈进行队列头部删除功能。

  原理解释清楚了,我们还需要理解一些细节

  1.判断第一个栈是否为空栈,空栈就可以直接输出-1

  2.判断第二个栈是否为空栈,不是空栈,我们要继续输出第二个栈里的值

  3.利用wihle的循环把第一个栈里的值给到第二个栈里面

  4.知道两个栈都为空,代码结束

四、代码分析

复制代码
class CQueue {
    stack<int> s1,s2;
public:
    CQueue() {

    }
    
    void appendTail(int value) {
        s1.push(value);
    }
    
    int deleteHead() {
        if(!s2.empty())
        {
            int a=s2.top();
            s2.pop();
            return a;
        }
        if(s1.empty())
            return -1;
        
        while(!s1.empty())
        {
            s2.push(s1.top());
            s1.pop();
        }
        
        int b =s2.top();
        s2.pop();
        return b;
    }
};

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */
复制代码

 

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示