欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C++初階作業(yè)Stack&&queue作業(yè)題一-創(chuàng)新互聯(lián)

作者:@小萌新
專欄:@C++初階
作者簡介:大二學(xué)生 希望能和大家一起進(jìn)步!
本篇博客簡介:實(shí)現(xiàn)幾道Stack和queue的作業(yè)題
在這里插入圖片描述

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供陸川網(wǎng)站建設(shè)、陸川做網(wǎng)站、陸川網(wǎng)站設(shè)計(jì)、陸川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、陸川企業(yè)網(wǎng)站模板建站服務(wù),十年陸川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

Stack queue作業(yè)題
    • 最小棧問題
    • 棧的壓入彈出序列
    • 逆波蘭表達(dá)式問題
  • 總結(jié)

最小棧問題

它問題的題目描述是這樣子的
在這里插入圖片描述

什么意思呢? 用一句話解釋下 就是設(shè)計(jì)一個棧

這個棧除了能夠執(zhí)行正常的操作之外我們還要可以隨時的獲取這個棧中的最小元素

那我們想想看我們的思路是什么?

是不是只要設(shè)計(jì)兩個棧就好了?

一個棧正常的存放數(shù)據(jù)

一個棧比較下當(dāng)前存放的數(shù)據(jù)是否比自己最小的數(shù)據(jù)小

如果小于自己最小的數(shù)據(jù)那就入這個數(shù)據(jù) 如果不小于自己最小的數(shù)據(jù) 那么就再入一次目前來說最小的數(shù)據(jù)

這道題的主要難點(diǎn)在于思路 思路解決了 后面的問題也就解決了

代碼表示如下

class MinStack {public:
    MinStack() {}
    
    void push(int val) 
    {_stk.push(val);
        if (_stkmin.empty())
        {_stkmin.push(val);
        }
        else
        {if (_stkmin.top() >val)
            {_stkmin.push(val);
            }
            else
            {_stkmin.push(_stkmin.top());
            }
        }
    }
    
    void pop() 
    {_stk.pop();
        _stkmin.pop();
    }
    
    int top() 
    {return _stk.top();
    }
    
    int getMin() 
    {return _stkmin.top();
    }
    
private:
    stack_stk;
    stack_stkmin;
};

在這里插入圖片描述

棧的壓入彈出序列

題目如下

在這里插入圖片描述
這里的題目要求我們來設(shè)計(jì)一個算法 檢驗(yàn)棧的插入彈出序列是否是有效的

也就是說 最后能否完全彈出所有的數(shù)據(jù)

那想想看 我們這個時候應(yīng)該怎么做呢?

要設(shè)計(jì)一個算法去計(jì)算有點(diǎn)太難了是不是

那么我們可不可以直接使用一個棧來模擬這個過程呢?

如果模擬通過是不是就表示肯定能通過了啊

我們一開始可以設(shè)計(jì)兩個指針

一個指針指向插入數(shù)據(jù)的數(shù)組

一個指針指向刪除數(shù)據(jù)的數(shù)組

像這樣

在這里插入圖片描述

當(dāng)我們的出棧序列不等于入棧序列的時候那就一直入棧

當(dāng)我們的出棧序列等于入棧序列的時候呢 就開始出棧

原則是:出掉所有符合出棧序列的數(shù)

在這里插入圖片描述
像是這種情況 就代表出掉了所有的可以出的序列了

所以我們這個時候就停止出棧

當(dāng)5也入棧的時候

在這里插入圖片描述
這個時候就是按照 5 3 2 1的順序出棧了

那么我們的代碼表示如下

class Solution {public:
    bool IsPopOrder(vectorpushV,vectorpopV) 
    {stackst;
        int pushvi = 0;
        int popvi = 0;
        while(pushvi< pushV.size())
        {st.push(pushV[pushvi]);
            pushvi++;

            // 判斷是否要刪除
            while(!st.empty() && st.top() == popV[popvi])
            {st.pop();
                popvi++;
            }
        }

        // 最后判斷下結(jié)束
        return popvi == popV.size(); 
        
    }
};

運(yùn)行結(jié)果如下

在這里插入圖片描述

逆波蘭表達(dá)式問題

題目如下

在這里插入圖片描述

這里大家首先要理解逆波蘭表達(dá)式究竟是什么?

大家可以上各類視頻網(wǎng)站詳細(xì)了解下 由于博客篇幅限制 這里

就只談逆波蘭表達(dá)式如何使用

它的原則其實(shí)很簡單就只有兩條

1 如果我們遍歷到加減乘除四個字符串 那么我們就從棧中取出兩個元素來分別作為左操作數(shù)和右邊操作進(jìn)行運(yùn)算 之后還將它入棧

2 如果我們遍歷到了數(shù)字字符串 那么我們就將它轉(zhuǎn)化成整型數(shù)字 然后存放到棧當(dāng)中去

那么對應(yīng)的代碼表示也就很簡單了

   long num1 = st.top(); st.pop();
           long num2 = st.top(); st.pop();

           if (x == "+") st.push(num2 + num1);
           if (x == "-") st.push(num2 - num1);
           if (x == "*") st.push(num2 * num1);
           if (x == "/") st.push(num2 / num1);
  st.push(stol(x));

最后在棧里面的數(shù)字其實(shí)就是我們要求的答案了

那么完整的代碼表示如下

class Solution {public:
    int evalRPN(vector& tokens) {stackst;
        for (auto x : tokens)
        {if (x == "+" || x =="-" || x =="*" || x =="/")
            {long num1 = st.top(); st.pop();
                long num2 = st.top(); st.pop();

                if (x == "+") st.push(num2 + num1);
                if (x == "-") st.push(num2 - num1);
                if (x == "*") st.push(num2 * num1);
                if (x == "/") st.push(num2 / num1);
            }
            else
            {st.push(stol(x));
            }
        }
        return st.top();
    }
};

運(yùn)行結(jié)果如下

在這里插入圖片描述

總結(jié)

在這里插入圖片描述
講解了棧的三道題目 最小棧問題 棧的壓入彈出序列 逆波蘭表達(dá)式問題

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站名稱:C++初階作業(yè)Stack&&queue作業(yè)題一-創(chuàng)新互聯(lián)
鏈接URL:http://aaarwkj.com/article32/dshisc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站面包屑導(dǎo)航、動態(tài)網(wǎng)站、定制開發(fā)網(wǎng)站收錄、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
91亚洲自偷观看高清| 日本在线免费观看91| 亚洲精品国产精品粉嫩av| 精品国产免费第一区二区三| 欧美精品一区二区毛卡片| 日韩精品一区二区av在线| 97在线视频观看官网| 丰满人妻被猛烈进入中文版| 亚洲人妻av一区二区三区| 亚洲精品欧美无人区乱码| 欧美丰满老妇性猛交| 人妻熟妇一区二区三区成人| 99国产精品热久久婷婷| 国产国产乱老熟视频网站| 伦理在线视频免费观看视频| 亚洲欧美日韩伦理一区| 精品少妇人妻一区二区三区| 日韩三级精品一区二区| 每日更新中文字幕粉嫩av| 亚洲人成网站在线免费看| 丝袜美腿美女日韩在线| 超碰91人人草人人干| 人人妻人人澡人人爽精品日本| 日本不卡高清视频在线播放| 我要看黄色一级性生活片| 欧美亚洲国语精品一区二区| 人妻熟女在线一区二区| 午夜福利日本一区二区| 欧美精品欧美激情免费区| 国产农村熟妇av国语对白| 日本中文有码视频在线观看| 神马免费午夜福利剧场| 久久精品人妻中文av| 欧美日韩亚洲一区二区搜索| 国内一级片内射视频播放| 成人免费激情在线观看| 欧美 成人一区二区三区| 熟妇人妻精品一区二区三区颏| 亚洲a∨乱码一区二区三区蜜臀| 日韩视频精品一区二区| 久久亚洲精品1区2区|