亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++實現(xiàn)逆波蘭表達(dá)式的例題詳解

 更新時間:2022年12月21日 08:18:58   作者:Albert Edison  
逆波蘭表達(dá)式由波蘭的邏輯學(xué)家盧卡西維茲提出,它的特點是:沒有括號,運算符總是放在和它相關(guān)的操作數(shù)之后。本文將通過例題講講如何利用C++實現(xiàn)逆波蘭表達(dá)式,需要的可以參考一下

1. 題目描述

2. 解題思路

逆波蘭表達(dá)式由波蘭的邏輯學(xué)家盧卡西維茲提出,它的特點是:沒有括號,運算符總是放在和它相關(guān)的操作數(shù)之后。因此,逆波蘭表達(dá)式也稱后綴表達(dá)式,它嚴(yán)格遵循「從左到右」的運算。

在我們平時生活中,使用的算式則是一種中綴表達(dá)式,如 ( 1 + 2 ) * ( 3 + 4 )。

該算式的逆波蘭表達(dá)式寫法為 ( ( 1 2 + ) ( 3 4 + ) * ) 。

計算逆波蘭表達(dá)式的值時,使用一個棧存儲操作數(shù),從左到右遍歷逆波蘭表達(dá)式,進(jìn)行如下操作:

  • 從左至右掃描該算術(shù)表達(dá)式,從第一個字符開始判斷,如果該字符是數(shù)字,則將數(shù)字入棧;
  • 如果不是數(shù)字,該字符則是運算符,如果遇到運算符,則將棧里面的兩個操作數(shù)出棧,其中先出棧的是右操作數(shù),后出棧的是左操作數(shù), 使用運算符對兩個操作數(shù)進(jìn)行運算,將運算得到的新操作數(shù)入棧。

整個逆波蘭表達(dá)式遍歷完畢之后,棧內(nèi)只有一個元素,該元素即為逆波蘭表達(dá)式的值。

3. 動圖演示

來看個動圖

4. 代碼實現(xiàn)

有一點需要注意,num 1 和 num2 進(jìn)行運算的時候,num1 是右操作數(shù),num2 是左操作數(shù),別寫反了!??!

代碼示例

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

                if (str == "+") {
                    st.push(num2 + num1);
                }
                else if (str == "-") {
                    st.push(num2 - num1);
                }
                else if (str == "*") {
                    st.push(num2 * num1);
                }
                else if (str == "/") {
                    st.push(num2 / num1);
                }
            }
            else {
                st.push(stoi(str)); // 如果是操作數(shù)就入棧,因為這是字符,所以要轉(zhuǎn)成數(shù)字
            }
        }
        return st.top();
    }
};

到此這篇關(guān)于C++實現(xiàn)逆波蘭表達(dá)式的例題詳解的文章就介紹到這了,更多相關(guān)C++逆波蘭表達(dá)式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC程序設(shè)計小技巧20例

    VC程序設(shè)計小技巧20例

    這篇文章主要介紹了VC程序設(shè)計小技巧20例,需要的朋友可以參考下
    2014-07-07
  • C++實現(xiàn)地鐵自動售票系統(tǒng)程序設(shè)計

    C++實現(xiàn)地鐵自動售票系統(tǒng)程序設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)地鐵自動售票系統(tǒng)程序設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++ Qt開發(fā)之使用QHostInfo查詢主機(jī)地址

    C++ Qt開發(fā)之使用QHostInfo查詢主機(jī)地址

    Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應(yīng)用程序,本文將重點介紹如何運用QHostInfo組件實現(xiàn)對主機(jī)地址查詢功能,希望對大家有所幫助
    2024-03-03
  • C++淺析引用的定義與使用

    C++淺析引用的定義與使用

    引用是C++一個很重要的特性,顧名思義是某一個變量或?qū)ο蟮膭e名,對引用的操作與對其所綁定的變量或?qū)ο蟮牟僮魍耆葍r,這篇文章主要給大家總結(jié)介紹了C++中引用的相關(guān)知識點,需要的朋友可以參考下
    2022-07-07
  • 一篇文章帶你了解論C語言中算法的重要性

    一篇文章帶你了解論C語言中算法的重要性

    最近一直在學(xué)數(shù)據(jù)結(jié)構(gòu)與算法,深深的感受到我們學(xué)習(xí)語言,永遠(yuǎn)都只是一項工具,方法才是其中最重要的部分。這篇文章我將會通過幾個例子來說明算法,也就是寫程序的思路在程序中的重要意義
    2021-08-08
  • C++實現(xiàn)LeetCode(199.二叉樹的右側(cè)視圖)

    C++實現(xiàn)LeetCode(199.二叉樹的右側(cè)視圖)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(199.二叉樹的右側(cè)視圖),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 在C語言中對utmp文件進(jìn)行查找和寫入操作的函數(shù)小結(jié)

    在C語言中對utmp文件進(jìn)行查找和寫入操作的函數(shù)小結(jié)

    這篇文章主要介紹了在C語言中對utmp文件進(jìn)行查找和寫入操作的函數(shù)小結(jié),包括pututline()函數(shù)和getutline()函數(shù)以及getutid()函數(shù),需要的朋友可以參考下
    2015-08-08
  • C語言光標(biāo)信息CONSOLE_CURSOR_INFO類型詳解

    C語言光標(biāo)信息CONSOLE_CURSOR_INFO類型詳解

    本文詳細(xì)講解了C語言光標(biāo)信息CONSOLE_CURSOR_INFO類型,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 亞馬遜經(jīng)典面試題實例詳解

    亞馬遜經(jīng)典面試題實例詳解

    這篇文章主要介紹了亞馬遜經(jīng)典面試題實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C語言實現(xiàn)電影管理系統(tǒng)

    C語言實現(xiàn)電影管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)電影管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論