」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在Java中使用堆疊將算術表達式解析為樹結構?

如何在Java中使用堆疊將算術表達式解析為樹結構?

發佈於2024-11-08
瀏覽:724

How to Parse Arithmetic Expressions into Tree Structures Using a Stack in Java?

在Java 中將算術表達式解析為樹結構

從算術表達式創建自定義樹可能是一項具有挑戰性的任務,特別是在確保樹結構時準確反映表達式的操作和優先順序。

要實現這一點,一種有效的方法是使用堆疊。以下是該過程的逐步描述:

  1. 初始化:從空堆疊開始。
  2. 處理令牌:迭代表達式中的每個標記:

    • 如果標記是左括號,則將其壓入堆疊。
    • 如果標記是整數,則創建一個新的標記
    • 如果token 是一個運算符,則檢查其優先級:

      • 如果運算符符的優先權高於目前運算子的優先權優先權在堆疊上(初始為0),將其壓入堆疊。
      • 如果運算子的優先權低於或等於目前優先級,則計​​算表達式,直到運算子的優先權高於目前優先權。
  3. 求值:當運算子優先順序較高時,對棧頂兩個節點進行運算,並用結果創建一個新節點。將新節點壓入堆疊。
  4. 括號處理:如果遇到右括號,則從堆疊中彈出節點,直到找到對應的左括號。在繼續之前執行任何掛起的操作。
  5. 最終結果:處理完所有代幣後,評估堆疊上的所有剩餘節點。產生的節點將表示表達式樹的根。

透過執行下列步驟,您可以建構一個準確反映給定算術表達式的表達式樹,包括支援表示為「5 ( -2)」。基於堆疊的方法可以有效地處理運算子優先權和括號,從而產生正確的樹結構。

版本聲明 本文轉載於:1729744563如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 考慮到 libcurl 的可用性,何時適合在 PHP 中啟用「allow_url_fopen」?
    考慮到 libcurl 的可用性,何時適合在 PHP 中啟用「allow_url_fopen」?
    在 PHP 中允許「allow_url_fopen」:平衡行為開發人員經常要求在 PHP 中啟動「allow_url_fopen」。在本文中,我們將檢查目前的行業規格並評估允許此功能是否仍然謹慎,特別是在 libcurl 可用的情況下。 當前行業規範對於大多數 Web 應用程序,啟用“allow_u...
    程式設計 發佈於2024-11-08
  • 何時在 jQuery.parseJSON 中使用單引號和雙引號?
    何時在 jQuery.parseJSON 中使用單引號和雙引號?
    jQuery.parseJSON 中的單引號與雙引號使用jQuery 的parseJSON 方法時,使用者可能會遇到行為差異,具體取決於是單引號還是雙引號雙引號用於將JSON 字串括起來。在本文中,我們將探討這些差異。 雙引號:標準方法根據 JSON 標準,雙引號被認為是括起的首選方法JSON 字串...
    程式設計 發佈於2024-11-08
  • 如何處理多處理 Python 應用程式中的日誌記錄?
    如何處理多處理 Python 應用程式中的日誌記錄?
    Python 中的多處理日誌記錄使用Python 的多處理模組時,重要的是要考慮日誌記錄實踐,以避免因多個進程寫入而導致錯誤同時處理相同的檔案句柄。預設情況下,mp.get_logger() 提供的多處理感知記錄器可確保 sys.stderr 中正確的鎖定機制。 但是,不支援多處理感知的模組可能需要...
    程式設計 發佈於2024-11-08
  • 答:我如何運行特定的phinx seeder並在phpunit中取得產生的記錄?
    答:我如何運行特定的phinx seeder並在phpunit中取得產生的記錄?
    這個答案解決了我遇到的一個問題:在 phpunit 上運行 Phinx 播種者: 回答回覆:我如何運行特定的phinx seeder並在phpunit中取得產生的記錄? ...
    程式設計 發佈於2024-11-08
  • 如何以程式設計方式為 LinearLayout 中的按鈕新增邊距?
    如何以程式設計方式為 LinearLayout 中的按鈕新增邊距?
    LinearLayout 中的動態邊距LinearLayout 中的動態邊距在Android 開發中,佈局在組織和顯示使用者介面元素方面發揮著至關重要的作用。佈局的一個常見要求是能夠指定元素之間的邊距。雖然 XML 提供了一種直觀的方式來定義邊距,但開發人員可能需要以程式設計方式建立佈局以確保靈活性...
    程式設計 發佈於2024-11-08
  • 如何使用 PowerMock 和 Mockito 有效模擬私有方法?
    如何使用 PowerMock 和 Mockito 有效模擬私有方法?
    使用PowerMock 模擬私有方法的替代解決方案儘管最初提出的使用PowerMock 的解決方案遇到了困難,但事實證明,另一種方法是成功的。使用 Mockito 和 PowerMock 的組合,可以有效地模擬私有方法。 如提供的程式碼片段所示,類別 CodeWithPrivateMethod 擁有...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中將列式資料結構轉換為基於行的格式?
    如何在 PHP 中將列式資料結構轉換為基於行的格式?
    將多維列式資料重新排序為基於行的結構給定一個具有面向列資料的關聯數組,任務是將其轉置為由行組成的多維數組。原始數組中的資料按列排列,目標是將同一列的值合併到行中。 原始陣列:$where = [ 'id' => [ 12, 13, 14 ...
    程式設計 發佈於2024-11-08
  • Next.JS 或 Nuxt.JS 哪個最好
    Next.JS 或 Nuxt.JS 哪個最好
    The ability to build scalable and seamless web applications quickly is the dream of every web developer. As a result, the importance of frameworks in ...
    程式設計 發佈於2024-11-08
  • 了解 RESTful API 和 Web 服務:主要差異和用例
    了解 RESTful API 和 Web 服務:主要差異和用例
    在現代軟體開發領域,RESTful API 和 Web 服務都是實現不同系統之間無縫通訊的基礎。雖然這些術語經常互換使用,但它們代表具有獨特特徵和用例的不同概念。對於旨在建立高效、可互通且可擴展的應用程式的開發人員來說,掌握 RESTful API 和 Web 服務 之間的差異至關重要。在本節中,我...
    程式設計 發佈於2024-11-08
  • React 應用程式的基本設計模式:升級您的組件遊戲
    React 應用程式的基本設計模式:升級您的組件遊戲
    如果您已经进入 React 世界一段时间,您可能听说过“这只是 JavaScript”这句话。虽然这是事实,但这并不意味着我们不能从一些经过验证的模式中受益,使我们的 React 应用程序更易于维护、可重用并且使用起来更加愉快。让我们深入研究一些基本的设计模式,这些模式可以让你的 React 组件从...
    程式設計 發佈於2024-11-08
  • 使用 PHP 建立 API 和 Web 服務
    使用 PHP 建立 API 和 Web 服務
    使用 PHP 建立 API 和 Web 服務涉及以下步驟:建立 PHP 環境,安裝 PHP、Apache 伺服器和 mod_php 模組。建立 API,編寫 PHP 腳本處理請求並回傳回應。建立 Web 服務,使用 PHP 框架或純 PHP 來建立伺服器。實戰案例:建立用戶註冊 API,處理 POS...
    程式設計 發佈於2024-11-08
  • Restful 路由 - Flask API 範例
    Restful 路由 - Flask API 範例
    Restful 路由致力於使所有不同應用程式的路由保持一致。 REST 是表述性狀態轉移。它以一致的、人類可讀的、機器可讀的方式使用 HTTP。 標準是 GET、POST、PATCH、PUT 和 DELETE。 下面將給出 Flask API 資料庫中的幾個靜態路由的範例,用於從前端獲取/向前端...
    程式設計 發佈於2024-11-08
  • ## 如何在沒有反向引用的情況下匹配 Go 正規表示式中的重複字元?
    ## 如何在沒有反向引用的情況下匹配 Go 正規表示式中的重複字元?
    在Go 的正規表示式中符合重複字元在Go 的正規表示式中,符合重複字元可能是一個挑戰,因為不支援反向引用。這可能會令人沮喪,特別是當您需要執行複雜的模式匹配任務時。 要解決此限制,有兩種可能的解決方案:使用替代正則表達式庫:一種選擇是使用支援反向引用的第三方正規表示式庫。一個流行的選擇是“glenn...
    程式設計 發佈於2024-11-08
  • 如何找到 Pandas DataFrame 中多列的最大值?
    如何找到 Pandas DataFrame 中多列的最大值?
    查找 Pandas DataFrames 中多列的最大值在資料分析中,查找多列的最大值是一項常見任務。在Python中,Pandas函式庫提供了執行此類操作的有效方法。 問題陳述:假設您有一個包含A列和B列的DataFrame,並且您需要建立一個新列 C,其中每個值都是 A列中對應值的最大值,且B....
    程式設計 發佈於2024-11-08
  • 用 Java 建立一個不依賴任何依賴的 Web 伺服器
    用 Java 建立一個不依賴任何依賴的 Web 伺服器
    我幾個月來一直致力於一個業餘愛好項目,這是一個 MIT 許可的 API 網關,旨在獨立於任何特定供應商。老實說,我認為一切都很順利。隨著我的程式碼庫的成長,我看到了圍繞核心(即 HTTP 伺服器)進行改進的機會。將核心 HTTP 伺服器拆分為自己的微框架似乎是一個合乎邏輯的解決方案(也是一個很好的學...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3