91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用棧結構實現四則運算的巧妙方法

學益得智能硬件 ? 來源:學益得智能硬件 ? 2025-02-07 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上個視頻寫了個簡易計算器,算個簡單的加減乘除還行,但是如果來個混合運算,或者加個括號,這幾行代碼就差的太多了。

處理這種混合運算,不得不提到數據結構中的棧。

我們平時寫的這種表達式,叫做中綴表達式,非常符合人的正常思維,但是計算機計算的話不方便。

中綴表達式可以轉換成后綴表達式,這種表達式看起來抽象一些,但是不需要括號或者優(yōu)先級,計算機計算的話比較方便。

整個過程有點復雜,分的情況比較多,就以這個表達式為例。

首先是把中綴表達式轉換成后綴表達式,需要用到一個棧,來存放運算符。

開始遍歷字符串。

遇到數字,直接寫下來。后面是加號,如果此時棧是空棧,符號直接進棧;再往后,左括號,左括號直接進棧;數字 1 直接寫下來;再往后是加號,如果棧頂是左括號,加號直接進棧;1 寫下來;后面是右括號,右括號不用進棧,此時讓加號出棧;左右括號遇到一起,可以讓左括號出棧,兩個括號直接丟掉就行;后面遇到乘號,因為乘號優(yōu)先級比加號高,乘號直接進棧;2 寫下來;遇到減號,因為減號的優(yōu)先級不高于乘號,所以乘號出棧;減號的優(yōu)先級同樣不高于加號,加號出棧;此時棧變成空棧,減號入棧;最后把 1 寫下來;表達式遍歷結束,減號出棧。

這個表達式就是后綴表達式。

計算后綴表達式也需要一個棧,方法就是,遇到數字進棧,遇到運算符就出來兩個數字,運算后把結果進棧。

前面的 2 1 1 分別進棧;遇到加號,1 和 1 出棧,計算得到 2 再進棧;2 進棧;遇到乘號,2 和 2 出棧計算得到 4,4進棧;遇到加號,4 和 2 出棧,計算得到 6,6 進棧;數字 1 進棧;最后是減號,1 出棧,6 出棧,用后出棧的減去先出棧的,結果是 5,5進棧。

最后留在棧里面的就是結果。

這個過程很復雜,寫代碼之前需要對各種情況分類。

這里直接貼出代碼,如果有需要,評論區(qū)留言代碼,我私信發(fā)你。

代碼寫出來后簡單的測試了幾個,沒什么問題,如果大家在使用中有什么問題,歡迎來交流。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 數字
    +關注

    關注

    1

    文章

    1700

    瀏覽量

    52555
  • 運算
    +關注

    關注

    0

    文章

    132

    瀏覽量

    26722

原文標題:用棧實現四則運算

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    回調函數例子的應用

    1、一個四則運算的簡單回調函數例子: #include #include /**************************************** * 函數指針結構
    發(fā)表于 12-11 07:23

    運算放大器的核心組成與典型結構

    運算放大器是模擬電路與混合信號電路的核心基礎模塊,其性能直接決定電子系統(tǒng)的信號處理精度與穩(wěn)定性。掌握其工作原理、設計方法及優(yōu)化策略,是理解模擬集成電路機制、開展電路研發(fā)的關鍵。以下從基礎特性出發(fā),探討核心組成、典型結構,并結合設
    的頭像 發(fā)表于 12-10 15:11 ?4644次閱讀
    <b class='flag-5'>運算</b>放大器的核心組成與典型<b class='flag-5'>結構</b>

    使用TFTP實現IAP的方法

    使用 TFTP 實現 IAP 的方法廣泛應用于需要具有固件升級功能的嵌入式應用中(例如,嵌入式 Linux bootloader 中)。TFTP 是一種在 UDP 傳輸層上執(zhí)行的簡單文件傳輸協(xié)議。此
    發(fā)表于 12-10 07:21

    如何巧妙甚至避免單片機的干擾問題

    在電子設計中,干擾的存在一直是工程師最頭痛的,干擾會導致電路發(fā)生異常,重則導致產品無法正常使用,因此,必須要巧妙甚至避免干擾問題,是許多工程師的重中之重,今天本文將談談單片機如何避免。 需要
    發(fā)表于 11-26 06:48

    單片機串口調試的巧妙方法分享

    printf(\"%s %srn\" ,__DATE__ ,__TIME__ );//日期時間 printf(\"%s %s%dn\",__FILE__,__FUNCTION__,__LINE__);//文件名、函數名、行號 void DBG_STRING(char *title, void *pvbuff, unsigned int u32Len) { unsigned int i, j; unsigned char *pu8Buff = pvbuff; printf(\"%srn\", title); printf(\"%s\", pu8Buff); printf(\"n\"); } void DBG_HEX(char *title, void *pvbuff, unsigned int u32Len) { unsigned int i, j; unsigned char *pu8Buff = pvbuff; printf(\"%srn\", title); for (i = 0; i < u32Len; i++) { printf(\"%02X\", pu8Buff); } printf(\"n\"); }
    發(fā)表于 11-21 06:28

    在Keil5中查看大小

    :打開生成的.map文件,在Image Symbol Table部分查找的相關信息,包括的大小和使用情況。 3、利用IDE的功能: 方法說明:Keil編譯器在編譯過程中會自動跟蹤
    發(fā)表于 11-14 06:32

    第4章 C語言基礎以及流水燈的實現(4.3 4.4)

    4.3 C語言基本運算符 小學數學學過加、減、乘、除等運算符號以及四則混合運算,而這些運算符號在C語言中也有,但是有些表達
    的頭像 發(fā)表于 10-29 15:30 ?338次閱讀

    定點數表示實數的方法以及定點數在硬件上的運算驗證

    本篇主要介紹定點數表示實數的方法以及定點數在硬件上的運算驗證 為什么選定點數 32位單精度浮點數: 32位的單精度浮點數為例,IEE754標準規(guī)定,一個flaot類型的浮點數X可以
    發(fā)表于 10-28 08:13

    浮點數是如何實現開平方運算

    摘要: 本文主要描述浮點數是如何實現開平方運算的。 簡介 事實上,浮點數的開平方運算結構與定點數甚至整數的開平方運算
    發(fā)表于 10-24 08:42

    e203乘法運算結構及算法原理

    e203乘法部件結構 E203的乘法操作由一個17周期的乘法器實現。為了提升性能,該乘法器采用了基4Booth編碼,將乘數分解為17個Booth編碼,與被乘數相乘后形成的部分和再在相加,從而實現
    發(fā)表于 10-22 06:43

    e203 ALU乘法運算結構及算法原理

    e203乘法部件結構 E203的乘法操作由一個17周期的乘法器實現。為了提升性能,該乘法器采用了基4Booth編碼,將乘數分解為17個Booth編碼,與被乘數相乘后形成的部分和再在相加,從而實現
    發(fā)表于 10-22 06:12

    利用e203中NICE協(xié)處理器加速濾波運算

    和加法器的方法來加速濾波運算。 使用NICE協(xié)處理器加速的程序為一個長循環(huán),計算較長(100到1000量級)的兩個浮點數組乘累加的結果,分別命名為ifm (Input Feature Map
    發(fā)表于 10-21 13:40

    如何利用Trace機制實現LLCP預覽功能

    在藍牙協(xié)議開發(fā)過程中,有時需要預先知道 LLCP。本文將介紹如何利用 Trace 機制實現 LLCP 預覽功能。
    的頭像 發(fā)表于 10-09 17:55 ?1948次閱讀

    三種藍牙架構實現方案(藍牙協(xié)議方案)

    藍牙架構實現方案有哪幾種?我們一般把整個藍牙實現方案叫做藍牙協(xié)議,因此這個問題也可以這么闡述:藍牙協(xié)議有哪些具體的架構方案?在藍牙協(xié)議
    的頭像 發(fā)表于 04-08 15:35 ?1573次閱讀
    三種藍牙架構<b class='flag-5'>實現</b>方案(藍牙協(xié)議<b class='flag-5'>棧</b>方案)

    數據中心能效困局怎么解?這份方案給出妙方

    數據中心能效困局怎么解?這份方案給出妙方
    的頭像 發(fā)表于 03-14 08:05 ?523次閱讀
    數據中心能效困局怎么解?這份方案給出<b class='flag-5'>妙方</b>