免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
“四則運算”算法

四、“四則運算”算法基礎(chǔ)知識

數(shù)學意義上,加減乘除運算被稱為“四則運算”,如1+2*3-4,“四則運算”算法主要分兩步:第一步是中綴表達式轉(zhuǎn)后綴表達式,第二步是計算后綴表達式得到結(jié)果。

4.1 基本概念介紹

4.1.1 中綴表達式與后綴表達式

一般情況下,四則運算的表達式為中綴表達式,比如表達式 A+(B-C/D)*E,該表達式的中綴表達式與后綴表達式如下:

  • 中綴表達式:A+(B-C/D)*E
  • 后綴表達式:ABCD/-E*+

中綴表達式操作符置于兩個操作數(shù)后綴表達式操作符置于兩個操作數(shù)之;另外,后綴表達式已經(jīng)去除括號,并且定義了運算的先后順序,稍后我們來分析。

4.1.2 操作符與操作數(shù)

中后綴表達式中的字符有操作數(shù)和操作符之分:

  • 操作符:表達式中的 +-*/()(稍后運算用到的#符號也是)
  • 操作數(shù):表達式中的 ABCDE

也就是說,我們將加(+)、減(-)、乘(*)、除(/)、和括號("()")稱作操作符,將運算的字符A、B、C、D、E稱作操作數(shù)。

4.1.3 棧、隊列與操作符優(yōu)先級

將中綴表達式轉(zhuǎn)為后綴表達式,需要

  • 一個操作符棧 —— 后進先出 LIFO
  • 一個字符隊列 —— 先進先出 FIFO
  • 定義操作符優(yōu)先級

其中,操作符棧 存儲操作符,并對操作符進行入棧出棧操作;字符隊列存儲轉(zhuǎn)換前后的表達式;操作符優(yōu)先級定義了棧內(nèi)以及棧外各個操作符的優(yōu)先級。

操作符優(yōu)先級規(guī)則如下:

  • * / 優(yōu)先級相同,+ - 優(yōu)先級相同
  • 優(yōu)先級: * / > + -;
  • 同一優(yōu)先級(比如 + - ):先進棧 < 后進棧;
  • 井號 # 優(yōu)先級最低
  • 在棧外,左括號 ( 優(yōu)先級最高;在棧內(nèi),( 優(yōu)先級除井號 # 外最低
  • 總的來說,在棧外 ( > * / > + - > ) > '#';在棧內(nèi) * / > + - > ) > ( > #

計算后綴表達式,需要

  • 一個操作數(shù)棧 —— 后進先出 LIFO
  • 一個字符隊列 —— 先進先出 FIFO

4.2 中綴表達式轉(zhuǎn)后綴表達式的過程

4.2.1 轉(zhuǎn)換過程流程圖


圖18:中綴表達式轉(zhuǎn)后綴表達式過程

主要的過程為:

  • 循環(huán)讀取表達式字符隊列的字符
    • 如果是操作數(shù)
      • 直接入隊列
    • 如果是操作符
      • 如果是 ")" 操作符
        • 棧頂元素出棧,入隊列,直到遇到第一個 “(”
        • 如果還沒讀取到 ”(“,就已經(jīng)讀到了 "#",說明表達式左括號和右括號不匹配
      • 否則,如果是 “(” 操作符
        • 直接入棧
      • 否則,比較指針讀取的當前操作符,與棧頂操作符的優(yōu)先級
        • 如果當前元素 <= 棧頂元素
          • 棧頂元素出棧,入隊列
          • 直到遇到優(yōu)先級 > 當前元素的棧頂單詞,或者遇到“#”,當前元素入棧
        • 否則,(當前元素優(yōu)先級 > 棧頂元素)當前元素入棧
    • 當隊列讀取到末尾,棧中所有元素依次出棧,并入隊列(#也入隊列)

4.2.2 轉(zhuǎn)換過程詳細示例

表達式 A+(B-C/D)*E 中綴轉(zhuǎn)后綴流程參見如下 PPT 演示:中綴轉(zhuǎn)后綴流程

4.3 計算后綴表達式過程

4.3.1 計算過程流程圖


圖19:計算過程流程圖

主要的過程為:

  • 循環(huán)讀取表達式字符隊列的字符
    • 如果是操作數(shù)(不是操作符)
      • 直接入棧
    • 否則是操作符
      • 棧頂彈出兩個操作符,做四則運算,結(jié)果重新入棧
    • 如果遇到隊列尾,結(jié)束

4.3.2 計算過程示例

表達式 ABCD/-E*+ 計算后綴表達式流程參見如下 PPT 演示:計算后綴表達式流程

4.4 簡單示例

下面演示一個簡單的示例,演示通過中綴表達式轉(zhuǎn)后綴表達式,并計算后綴表達式來計算 1+(3-4/2)*5 的過程:

表達式 1+(3-4/2)*5 中綴轉(zhuǎn)后綴流程參見如下 PPT 演示:中綴轉(zhuǎn)后綴示例

表達式 1342/-5*+ 計算后綴表達式流程參見如下 PPT 演示:計算后綴表達式示例

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
經(jīng)典算法(五)逆波蘭表達式
算術(shù)表達式的前綴表達式,中綴表達式和后綴表達式
前綴、中綴、后綴表達式
利用堆棧解析算術(shù)表達式一:基本過程
利用棧將 (中綴表達式) 轉(zhuǎn)換成 (后綴表達式)
【數(shù)據(jù)結(jié)構(gòu)及算法】1.將表達式轉(zhuǎn)換成逆波蘭式
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服