国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值,數(shù)據(jù)結(jié)構(gòu)與算法,python學(xué)習(xí),python,開發(fā)語言,學(xué)習(xí),算法,服務(wù)器,github,學(xué)習(xí)方法

??write in front??
??大家好,我是Aileen??.希望你看完之后,能對你有所幫助,不足請指正!共同學(xué)習(xí)交流.
??本文由Aileen_0v0?? 原創(chuàng) CSDN首發(fā)?? 如需轉(zhuǎn)載還請通知??
??個人主頁:Aileen_0v0??—CSDN博客
??歡迎各位→點贊?? + 收藏?? + 留言???
??系列專欄:Aileen_0v0??的PYTHON學(xué)習(xí)系列專欄——CSDN博客
??我的格言:"沒有羅馬,那就自己創(chuàng)造羅馬~"?

數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值,數(shù)據(jù)結(jié)構(gòu)與算法,python學(xué)習(xí),python,開發(fā)語言,學(xué)習(xí),算法,服務(wù)器,github,學(xué)習(xí)方法

目錄

?回顧

后綴表達(dá)式運算過程

后綴表達(dá)式求值思路及代碼流程



數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值,數(shù)據(jù)結(jié)構(gòu)與算法,python學(xué)習(xí),python,開發(fā)語言,學(xué)習(xí),算法,服務(wù)器,github,學(xué)習(xí)方法

?回顧??

之前我們學(xué)習(xí)了棧的應(yīng)用之前,后綴表達(dá)式的轉(zhuǎn)換,如有遺忘,點擊????

今天我們來學(xué)習(xí)-后綴表達(dá)式求值 問題

跟中綴轉(zhuǎn)換為后綴問題不同

對后綴表達(dá)式來說 ,從左到右掃描的過程中,

由于操作符在操作數(shù)后面,

所以要暫存操作數(shù),在碰到操作符時,再將兩個暫存操作數(shù)進(jìn)行實際計算

這個過程利用的就是棧的特性:操作符只作用于離他最近的兩個操作數(shù).


后綴表達(dá)式運算過程??


后綴表達(dá)式,又稱逆波蘭式,不包含括號,運算符放在兩個運算對象的后面,所有的計算按運算符出現(xiàn)的順序,嚴(yán)格從左向右進(jìn)行(不再考慮運算符的優(yōu)先規(guī)則),非常方便計算機(jī)的計算。

后綴表達(dá)式的計算過程如下:
1??從左至右掃描表達(dá)式,遇到數(shù)字時,將數(shù)字壓入堆棧,遇到運算符時,彈出棧頂?shù)膬蓚€數(shù),用運算符對它們做相應(yīng)的計算,并將結(jié)果入棧
2??重復(fù)上述過程直到表達(dá)式最右端,最后運算得出的值即為表達(dá)式的結(jié)果

計算后綴表達(dá)式的動態(tài)流程如下,以1+2-3*2的后綴表達(dá)式為例:

數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值,數(shù)據(jù)結(jié)構(gòu)與算法,python學(xué)習(xí),python,開發(fā)語言,學(xué)習(xí),算法,服務(wù)器,github,學(xué)習(xí)方法

最后得到的結(jié)果 - 3 還要 push 回棧頂


后綴表達(dá)式求值思路及代碼流程??

1.首先創(chuàng)建空棧operandStack 用于 暫存操作數(shù)

2.將后綴表達(dá)式 用split方法解析為單詞(token) 的列表

3.從左到右掃描單詞列表

? ?如果單詞是一個操作數(shù),將單詞轉(zhuǎn)換為整型int,壓入operandStack 棧頂

? ?如果單詞是一個操作符 (* / + - ) , 就開始求值, 從 棧頂彈出2個操作數(shù),先彈出的是右操作數(shù),? ? ?后彈出的是左操作數(shù),計算后將值重新壓入棧頂.

4.單詞列表掃描結(jié)束后,表達(dá)式的值就在棧頂

5.彈出棧頂?shù)闹?返回.

class Stack:#Stack---->ADT
    def __init__(self):
        self.items =[]

    def isEmpty(self):
        return self.items == []

# 滿足這些屬性(行為)的是棧
    def push(self,item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items)-1]

    #
    def size(self):
        return len(self.items)

def postfixEval(postfixExpr):
    operandStack = Stack()
    tokenList = postfixExpr.split()

    for token in tokenList:
        if token in "0123456789":
            operandStack.push(int(token))
        else:
            operand2 = operandStack.pop()
            operand1 = operandStack.pop()
            result = doMath(token,operand1,operand2)
            operandStack.push(result)
    return operandStack.pop()

def doMath(op, op1, op2):
    if op == "*":
        return op1 * op2
    elif op == "/":
        return op1 / op2
    elif op == "+":
        return op1 + op2
    else:
        return op1 - op2

通過調(diào)用得到的運行結(jié)果:?

數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值,數(shù)據(jù)結(jié)構(gòu)與算法,python學(xué)習(xí),python,開發(fā)語言,學(xué)習(xí),算法,服務(wù)器,github,學(xué)習(xí)方法

數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值,數(shù)據(jù)結(jié)構(gòu)與算法,python學(xué)習(xí),python,開發(fā)語言,學(xué)習(xí),算法,服務(wù)器,github,學(xué)習(xí)方法文章來源地址http://www.zghlxwxcb.cn/news/detail-727693.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達(dá)式求值的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《數(shù)據(jù)結(jié)構(gòu)》:中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式 + 后綴表達(dá)式的計算

    《數(shù)據(jù)結(jié)構(gòu)》:中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式 + 后綴表達(dá)式的計算

    補(bǔ)充了一個判斷輸入中綴表達(dá)式 合法性 的代碼: 《數(shù)據(jù)結(jié)構(gòu)》:中綴表達(dá)式合法性判斷_Amentos的博客-CSDN博客 ? 目錄 一、基本概念 二、中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式 ? ?例???? ??中綴表達(dá)式? 2*(3+5)+7/1-4? 轉(zhuǎn)換為后綴表達(dá)式 三、后綴表達(dá)式的計算 ? ?例???? ? 后綴表達(dá)式

    2024年02月03日
    瀏覽(35)
  • 數(shù)據(jù)結(jié)構(gòu) | 后綴表達(dá)式【深入剖析堆棧原理】

    數(shù)據(jù)結(jié)構(gòu) | 后綴表達(dá)式【深入剖析堆棧原理】

    Hello,大家好,國慶的第二天,帶來的是數(shù)據(jù)結(jié)構(gòu)中堆棧部分的后綴表達(dá)式,這也是一塊有關(guān)棧的應(yīng)用方面困擾了眾多同學(xué)的一個大難題,今天就讓我們一起解決這個難題?? 后綴表達(dá)式也稱為 逆波蘭表達(dá)式 ,也就是將算術(shù)運算符放在操作數(shù)的后面 例如【1 + 2 * 3】的后綴表達(dá)

    2023年04月27日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu)——前綴、中綴、后綴表達(dá)式實現(xiàn)和轉(zhuǎn)換(Java)

    數(shù)據(jù)結(jié)構(gòu)——前綴、中綴、后綴表達(dá)式實現(xiàn)和轉(zhuǎn)換(Java)

    1.7.1 概念 它們都是對表達(dá)式的記法,因此也被稱為前綴記法、中綴記法和后綴記法。它們之間的區(qū)別在于 運算符相對與操作數(shù)的位置 不同 前綴 表達(dá)式的運算符位于與其相關(guān)的 操作數(shù)之前 ;中綴和后綴同理。 平時我們 日常使用 并最為熟悉的就是中綴表達(dá)式。如: 1 + 2 *

    2024年02月05日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu) | 棧的中綴表達(dá)式求值

    數(shù)據(jù)結(jié)構(gòu) | 棧的中綴表達(dá)式求值

    目錄 什么是棧? 棧的基本操作 入棧操作 出棧操作 取棧頂元素 中綴表達(dá)式求值 實現(xiàn)思路 具體代碼 棧是一種線性數(shù)據(jù)結(jié)構(gòu),具有“先進(jìn)后出”(Last In First Out, LIFO)的特點。它可以看作是一種受限的線性表,只能在表的一端進(jìn)行插入和刪除操作,這一端被稱為棧頂,另一端

    2024年02月02日
    瀏覽(25)
  • C++ 數(shù)據(jù)結(jié)構(gòu) 棧 中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式并求值

    C++ 數(shù)據(jù)結(jié)構(gòu) 棧 中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式并求值

    寫在前面,這里用的是我自己寫的Stack類,并非STL,實現(xiàn)方法為靜態(tài)數(shù)組,但使用過程中的函數(shù)方法一樣,無傷大雅。(完整code和Stack_static類賦在最后) 1.從左到右遍歷 2.數(shù),即參與運算數(shù),直接放進(jìn)后綴表達(dá)式之后 3.左括號 ,直接壓入棧(因為括號的優(yōu)先級最高,無需判斷

    2024年02月03日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)】一篇文章帶你徹底學(xué)會《后綴表達(dá)式》

    【數(shù)據(jù)結(jié)構(gòu)】一篇文章帶你徹底學(xué)會《后綴表達(dá)式》

    創(chuàng)作不易,本篇文章如果幫助到了你,還請點贊 關(guān)注支持一下???)!! 主頁專欄有更多知識,如有疑問歡迎大家指正討論,共同進(jìn)步! ??c語言系列專欄:c語言之路重點知識整合 ?? 給大家跳段街舞感謝支持!? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 后綴表

    2024年02月05日
    瀏覽(35)
  • 【數(shù)據(jù)結(jié)構(gòu)】13:表達(dá)式轉(zhuǎn)換(中綴表達(dá)式轉(zhuǎn)成后綴表達(dá)式)

    【數(shù)據(jù)結(jié)構(gòu)】13:表達(dá)式轉(zhuǎn)換(中綴表達(dá)式轉(zhuǎn)成后綴表達(dá)式)

    從頭到尾依次讀取中綴表達(dá)式里的每個對象,對不同對象按照不同的情況處理。 如果遇到空格,跳過 如果遇到運算數(shù)字,直接輸出 如果遇到左括號,壓棧 如果遇到右括號,表示括號里的中綴表達(dá)式已經(jīng)掃描完畢,將棧頂?shù)倪\算符彈出并輸出, 直至遇到左括號(左括號出棧

    2024年02月19日
    瀏覽(18)
  • 棧的數(shù)據(jù)結(jié)構(gòu)完成表達(dá)式(5*10+2-7+5)/10+5的計算

    棧的數(shù)據(jù)結(jié)構(gòu)完成表達(dá)式(5*10+2-7+5)/10+5的計算

    棧(Stack)是一種線性數(shù)據(jù)結(jié)構(gòu),具有后進(jìn)先出(LIFO)的特性。它可以理解為一種類似于抽屜的容器,只能在頂部進(jìn)行插入和刪除操作,其他位置不可訪問。棧的基本操作包括入棧(push)和出棧(pop),其中入棧將元素放入棧頂,出棧將棧頂元素移出。 棧在計算機(jī)科學(xué)和軟

    2024年02月09日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】超詳細(xì)講解:算術(shù)表達(dá)式轉(zhuǎn)化為后綴表達(dá)式、前綴表達(dá)式、表達(dá)式樹的構(gòu)建

    【數(shù)據(jù)結(jié)構(gòu)】超詳細(xì)講解:算術(shù)表達(dá)式轉(zhuǎn)化為后綴表達(dá)式、前綴表達(dá)式、表達(dá)式樹的構(gòu)建

    作者: 努力學(xué)習(xí)的大一在校計算機(jī)專業(yè)學(xué)生,熱愛學(xué)習(xí)和創(chuàng)作。目前在學(xué)習(xí)和分享:算法、數(shù)據(jù)結(jié)構(gòu)、Java等相關(guān)知識。 博主主頁: @是瑤瑤子啦 所屬專欄: 【數(shù)據(jù)結(jié)構(gòu)】:該專欄專注于數(shù)據(jù)結(jié)構(gòu)知識,持續(xù)更新,每一篇內(nèi)容優(yōu)質(zhì),淺顯易懂,不失深度! 近期目標(biāo): 寫好專欄

    2024年02月08日
    瀏覽(17)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】棧的講解

    【數(shù)據(jù)結(jié)構(gòu)與算法】棧的講解

    棧(stack)是限定僅在表尾進(jìn)行插入和刪除操作的線性表。 我們把 允許插入和刪除的一段稱為棧頂(top) , 另一端稱為棧底 , 不含任何數(shù)據(jù)元素的棧稱為空棧 。 棧又稱為后進(jìn)先出的線性表 。 進(jìn)一步理解棧,棧首先他是一個 線性表 ,所以棧元素具有前驅(qū)后繼關(guān)系。 棧的插入操

    2023年04月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包