野生前端的資料結構練習(1)——棧

來源:互聯網
上載者:User

標籤:java   blog   運算優先順序   structure   href   第一個   參數   使用   tac   

習題主要選自Orelly出版的《資料結構與演算法javascript描述》一書。

參考代碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/Stack

基本練習
  1. 根據棧的特性實現一個Stack類,並在後續題目中需要用棧時使用它。
  2. 編寫一個函數unitTrans(num, unit),num為一個10進位數字,unit要轉換的進位數,求轉換結果。
  3. 編寫一個函數recursion(num),num為一個10進位數字,要求輸出num!的結果。
  4. 編寫一個函數palindrome(str),str是一個字串,如果它是一個迴文字串,則返回true,否則返回false
課後習題(書中第四節習題)
  1. 一個算數運算式中有{},(),[]三種括弧,編寫一個函數,接受一個算數運算式作為參數,如果括弧完全符合則返回true,否則返回括弧缺失的位置。
  2. 一個運算式的尾碼運算式形式為opt1 opt2 operator,編寫一個函數,接受一個算數運算式作為參數(平時使用的算數運算式形式即為中綴運算式),將其轉換為尾碼運算式(可暫不考慮運算優先順序)。
  3. 盒子裡從上到下放有不定數量的【紅色】,【白色】,【×××】三種糖果,編寫一個程式,可以使用一個或多個棧,在保證原糖果順序不變的情況下,取出所有的【×××】糖果。
習題思路
  1. 按字元逐個解析運算式,遇到左括弧即將其壓入棧中,遇到右括弧就從棧頂彈出一個元素,查看兩者是否匹配,若匹配則繼續,若不匹配則返回位置。需要注意的是,如果所有括弧均配,則棧的最終狀態需要為空白。
  2. 逆向解析原運算式,將運算元操作符分別壓入兩個棧中,接著先從運算元棧中彈出第一個元素,在輪流從運算元棧和操作符棧中彈出元素直至棧為空白即可。如果從前到後解析,則棧頂的是最後的元素,出棧時考慮到順序即可。
  3. 只用一個額外的棧即可,將【紅色】【白色】糖果壓入新棧,將×××糖果移除,當糖果盒為空白後,再從新的糖果棧中逐個彈出元素重新放回糖果盒的棧即可。

野生前端的資料結構練習(1)——棧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.