亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

計算器制作JAVA版(第二步,表達式結構檢查)

系統 1741 0

這個問題一個特點--麻煩!
如何檢查結構呢,結構錯誤是因為不符合我們的目標要求。
在這里我們需要一個格式正確的表達式序列,那么我們就得視具體情況而作出判斷。在這里可是涉及一個巨大的數學思想的!!!其實比較簡單,就是我們高中數學里面最常用到的”分類討論“。
如果你有一個縝密的思路,在這里是非常好的,我這里的分析估計疏漏了大量的情況,希望大家能夠一起補充,共同進步。
首先是比較簡單的一部分,括號數量以及對應情況是否正確。
???????? 那么到底什么是正確的對應呢?類似于這種的()表達式,那么我們現在簡化我們的表達式,假設就只有括號,這可以通過簡單的字符串處理獲得。看以下幾種情況:

()()()
((()))
()(())
(()()(()))

我們不難發現都是正確的,那么究竟為什么正確呢?因為每一個‘(’都有一個‘)’與之相對應。那讓我們對這些對應一個個解析

() ??? ()? ??? ()
(? ??? (? ???? () ????? ) ??? )
() ??? (? ???? ()????? )
( ???? () ???? ()????? ( ?? ()?? ) ?? )

從顏色我們可以看出,一旦出現‘)’就會與最近的一個‘(’相互配對,我們假設配對以后她們一起消失了,那么后面的‘)’與前面的變化效果是一致的。這樣一來,我們就可以得出一個判斷方法:如果出現‘)’就立刻與前面的‘(’配對,然后一起消失,如果沒有可以配對的就自動留下。直到最后,如果還剩下一些括號,就說明匹配有錯誤。那么這種處理方法要求我們要利用另外一個線性空間保留以前的括號,并且能夠更新(就是比對--匹配--消失)。這時我們容易想到用一個數組(足夠長,以便存放所有的數據),并且用一個整數P指向(其實就是記錄)已經使用的數組(因為我們是線性掃描的,所以在一步一步輸入括號串的時候是逐步向這個數組里面添加數據的)末尾,有新數據進入,就和末尾的數據匹配對比,如果匹配就一起消失(即那個整數P減少一個單位)。如此工作,直至最后。那么我們繼續剖析這個數組,我們可以發現這個數組只在末端處理數據,就像一個餅干袋子,我們吃放都是在一邊進行的(如果有人吃餅干,袋子兩邊都開的話,招呼一聲--還有人跟我一樣--不過我是餅干吃了一半以后再開另外一邊);還有一種形象的比喻是,使用的時候模式就是彈夾的模式。其實這種結構就是那個所謂的棧數據結構。
??????????????? ?
我們定義push(object) 將object壓入棧中,pop()彈出棧頂元素,作為返回值.

clear??the?stack
n:
= 1
repeat
?????????c?:
= ?expression[n]
?????????
if ???c = ' ) ' ??then
????????????????d?:
= ?pop()
????????????????
if ??not??d = ' ( ' ??then
???????????????????????push(d)
???????????????????????push(c)
????????n:
= n + 1
until??n
> length[expression]
return ?stack
?

以上是操縱的偽代碼,這里需要注意,我們用兩個線性空間存儲數據(一個是存儲所有的待掃描括號,另外一個是用來模擬棧操作的)。
關于stack的具體實現可以查看相關文檔,JAVA里面有這個類大家可以直接用。

然后就是一些繁瑣的分類情況了
?????? a.操作符(包括+-*/^)不能兩個一起連續出現
?????? b.類似于? '('+'操作符' 不能出現(到后面我們是允許減號出現的,因為它可以被理解為負號)?
這些東西很繁瑣,寫文章的時候我在進一步完善這一部分。

好了以上就是結構的檢查部分了。
在這里我們學習了一種數據結構--棧。關于棧的詳細討論任何一本數據結構書中都有詳細說明,大家自己去查閱。

在這里提一個問題:現在有2n+1個數字,其中我們知道有一個數字它出現的次數>=n+1,我們希望通過一次掃描來源數據來找出這個數字,有什么辦法可以解決呢?Please use the stack.It can help you solve this problem.

計算器制作JAVA版(第二步,表達式結構檢查)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 婷婷婷色 | 青青久久久 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产一级毛片国语普通话对白 | 美女黄色一级毛片 | 亚洲免费视频网址 | 日本大蕉香蕉大视频在线观看 | 99久久成人国产精品免费 | 久久国产精品99久久久久久牛牛 | 亚洲黄色免费看 | 亚洲图片欧美另类 | 免费黄色视屏网站 | 成人性色大片 | 九九热视频免费 | 男女超爽视频免费播放在线观看 | 国产这里有精品 | 精品视频一区在线观看 | 黄色一级免费网站 | 麻豆成人久久精品二区三 | 毛片免费观看网址 | 欧美人成一本免费观看视频 | 日韩毛片在线看 | 久久亚洲精品中文字幕亚瑟 | 亚洲国产99在线精品一区69堂 | 四虎影院最新入口 | 91热在线观看精品 | 久久久精品中文字幕 | 好吊妞视频998www | 色婷婷久久综合中文久久一本` | 日韩综合| 91精品啪国产在线观看免费牛牛 | 午夜亚洲国产理论秋霞 | 国产特黄一级毛片特黄 | 久久人人网 | 牛牛影视成人午夜影视 | a国产成人免费视频 | 成人999| 久久天天躁狠狠躁夜夜爽蜜月 | 在线看福利视频120秒 | 成人午夜毛片在线看 | 亚洲欧美日韩专区一 |