999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于雙棧結構的中綴表達式算法設計與實現

2018-01-15 10:01:31許曉宇
智能計算機與應用 2017年6期
關鍵詞:符號設計

許曉宇

摘要: 關鍵詞: 中圖分類號: 文獻標志碼: A文章編號: 2095-2163(2017)06-0108-03

Abstract: The conventional algorithm calculating infix expression is to convert infix expressions into postfix expression,which has conversion intermediate process; this paper designs an algorithm based on dual stack structure, according to the inherent human thinking from left to right to directly calculate the infix expression, using only simple singular group to act as a data structure. During the process of the pretreatment, respectively restore the operators into symbol array stack and store values into real array stack. In the next calculation section, with the help of C language powerful circulation control ability, traverse the symbols stack, according to priority push and pop operators, call the real array double stack data in monocular and binocular operation, calculate the deposit, once again store in the top of the stack until the symbol stack is empty. Therefore, real array in the top of the stack is the calculation results. The experimental results show that the algorithm can effectively deal with monocular and binocular calculations, as well as Brackets.

0引言

中綴表達式的求解是算法與數據結構中的經典問題,也是程序設計中的一個不可回避的熱點問題,算法的邏輯描述相對簡單,但實現起來很多細節處理偏難。對于中綴表達式的算法設計,大致可以分為兩類:一類是依據物理計算機固有處理方式的特性去設計算法,另一類是依據人的固有思維習慣去設計算法。

多數學者,都只選擇第一類算法[1],由于計算機擅長處理不帶優先級的逆波蘭表達式(即后綴表達式),因此,這類算法中對“中綴表達式的求值”問題轉換成了兩步:第一步將中綴表達式轉換成后綴表達式,第二步對后綴表達式的求值計算。在算法設計的過程中,根據具體選擇數據結構的不同,又分為基于數組的棧結構實現和基于二叉樹的棧結構實現。每種實現又可以引出基于不同的程序設計語言的各種版本的源代碼。還有一些學者將中綴表達式轉換成前綴表達式[2-3]進行求值。

本文算法則另辟蹊徑,選擇了依據人的固有思維習慣去設計算法,人類處理算術問題方法就是中綴表示式的直接處理方式,一般是按從左到右的順序,依據運算符的優先級進行計算。讓計算機模擬人類,直接對中綴表達式提供處理,需要從左到右遍歷中綴表達式,需要分優先級設計計算,需要一次性直接完成計算[4-5]。但計算機畢竟不是人類,所以就隱含了一定的問題,內容分析如下

1)從鍵盤或文本輸入框中,輸入的是字符串,如何變成運算符、數值。

2)優先級的設置能否與人類一樣。

3)如何一次性從左到右,直接裝入一目、二目運算符如“(、)、+、-、*、/、^、正、負”,并按優先級展開計算。

本文在算法設計時,使用了兩個數組棧結構[6-8]:一個放運算符,一個放操作數值,同時在算法的實現方式上用兩重循環控制的遞推方式替代遞歸方式,用數組和下標指針的移動替代棧結構棧頂元素的彈出與壓入。

1算法描述

1.1對中綴表達式的預處理

優先級次數高低遵循人類的純粹的數學中的計算優先級,設置的數值越大代表優先級越高,特別“(”入棧前及入棧后略有不同,壓棧前“(”優先級最高,壓棧后“(” 最低,假定只針對上述運算符,那么優先級設置如表1所示。

1.2計算核心為雙重循環控制遍歷雙棧結構

本文在算法設計時,使用了兩個數組充當棧結構[9-10]:一個放運算符,一個放操作數值,同時在算法的實現方式上用兩重循環控制的遞推方式替代遞歸方式,用數組和下標指針的移動替代棧結構棧頂元素的彈出與壓入。

從左到右依次遍歷預處理后的字符串,每次遍歷1個,直到遇到“等號”結束。設計解析闡釋如下:

1)如果遇到字符串是數值X,那么就壓入數值棧內。

2)如果遇到的是運算符,判斷棧是否為空:若為空,當前的符號壓棧,本次循環結束;否則,將當前的符號,與符號棧內所有的運算符進行循環比較,直到本次循環結束。

若當前的符號是“)”并且符號棧棧頂是“(”,那么直接彈出棧頂“(”,右括號“)”直接丟棄,循環結束。

若當前的符號的優先級小于等于棧頂的運算符,彈出棧頂運算符,同時依據此棧頂運算符的目次,從數值棧內彈出數值進行計算,然后再將計算結果,壓入數值棧。繼續做當前符號和棧頂元素的判斷,直到棧空,將當前符號壓入棧內,結束循環。endprint

若當前的符號的優先級大于棧頂運算符直接壓棧。

3)如果當前棧不空,則依次彈出棧內運算符,依次計算,棧頂數據[9]為最終計算結果。

2算法實現

2.1數據定義

用戶輸入的中綴表達式字符串定義為:char origin1[200];預處理后的標準形式字符串char s[80];存放運算符的字符數組char fuhao[80];初次存放臨時數值字符串chrar shuzhi[80],存放操作數數值的雙精度數組double num[20];2個棧頂下標指示器int j,k;

2.2數據的賦值

4結束語

通過實驗不難發現本算法計算能力較強,對于人為多重括號的情況、正負號的情況都可以進行良好優化處理,使用數組棧結構,程序的空間效率較高。當然,文中沒有過多考慮程序健壯性,比如中綴表達式合法性檢查,也未能增加各種進制的轉換函數,不能方便進行各種進制的中綴表達式計算。

參考文獻:

[1] 胡云,毛萬年. 一種將中綴表達式轉換為后綴表達式的新方法[J]. 成都大學學報(自然科學版),2008,27(1):52-55.

[2] 曹曉麗,潘穎. 一種利用棧實現中綴表達式向前綴表達式轉換方法的改進[J]. 甘肅科技,2006,22(11):64-66,38.

[3] 劉任任. 中綴表達式到前綴表達式的快速算法[J]. 湘潭大學自然科學學報,1988,10(4):96-99.

[4] 李艷玲. 數據結構中實現表達式求值算法的巧妙轉換[J]. 職大學報(自然科學版),2005(4):62-63.

[5] 王迤冉,王華東. 表達式求值的一種實現方法[J]. 周口師范高等專科學校學報,2001,18(2):31-33.

[6] 王淑禮,王新霞. 算術表達式求值算法實現的難點剖析[J]. 福建電腦,2012,28(3):55-56.

[7] 李世華,劉曉娟,姜晨,等. 關于表達式求值的算法研究與實現[J]. 甘肅科技,2011,27(1):11-15.

[8] 蘭美輝,楊平. 基于棧結構的算術表達式求值算法研究[J]. 曲靖師范學院學報,2014,33(3):57-59.

[9] 王紅奎,肖榮. 基于棧結構的浮點型數據表達式求值算法[J]. 南昌航空工業學院學報(自然科學版),2004,18(3):87-89.

[10]李橙,丁國棟. 棧在表達式求值中的應用[J]. 電腦知識與技術,2014,10(34):8156-8157,8164.endprint

猜你喜歡
符號設計
學符號,比多少
幼兒園(2021年6期)2021-07-28 07:42:14
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
“+”“-”符號的由來
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
變符號
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
倍圖的全符號點控制數
圖的有效符號邊控制數
主站蜘蛛池模板: 国产原创自拍不卡第一页| 免费网站成人亚洲| 国产精品偷伦在线观看| 国产成人综合久久| 一本久道久久综合多人| 毛片网站观看| 国产精品伦视频观看免费| aaa国产一级毛片| 一级全黄毛片| 国产成人精品高清在线| 欧美精品v欧洲精品| 精品久久久久成人码免费动漫 | 无码福利日韩神码福利片| 亚洲国产综合精品一区| 天堂成人av| 91精品网站| 激情综合五月网| 亚洲一区二区三区中文字幕5566| 亚洲欧美不卡视频| 欧美丝袜高跟鞋一区二区| 在线播放91| 婷婷午夜影院| 自拍偷拍欧美日韩| 中国一级特黄大片在线观看| 夜夜操国产| 熟妇无码人妻| 中文一级毛片| 欧洲成人免费视频| 色综合久久无码网| 国产导航在线| 99久久国产精品无码| 中文字幕调教一区二区视频| 亚洲精品无码AV电影在线播放| 免费中文字幕一级毛片| 91精品啪在线观看国产60岁 | 午夜视频在线观看免费网站| 91免费片| 国产视频久久久久| 97久久精品人人| 亚洲系列无码专区偷窥无码| 国产精品无码AV片在线观看播放| 亚洲浓毛av| 久久久受www免费人成| a毛片在线免费观看| 在线播放国产99re| 91高清在线视频| 色婷婷在线影院| 制服丝袜 91视频| 欧美激情视频一区| 亚洲综合国产一区二区三区| 精品久久综合1区2区3区激情| 色综合综合网| 亚洲欧美日韩中文字幕一区二区三区 | 中文字幕无码电影| 91色在线观看| av一区二区三区高清久久| 91原创视频在线| 国产精品观看视频免费完整版| 狠狠色丁香婷婷| 高清无码一本到东京热| 在线欧美一区| 亚洲精品第一在线观看视频| 亚洲欧美自拍视频| 自慰高潮喷白浆在线观看| 国产欧美日韩精品综合在线| 亚洲成人精品在线| 久久久久九九精品影院 | 亚洲第一黄片大全| 99九九成人免费视频精品| 18禁不卡免费网站| 亚洲午夜福利精品无码不卡 | 波多野结衣中文字幕一区二区| 色屁屁一区二区三区视频国产| 欧美成人免费午夜全| 亚洲一区网站| 成人韩免费网站| 亚洲系列无码专区偷窥无码| 久久精品日日躁夜夜躁欧美| 91在线高清视频| 无码精品福利一区二区三区| 无码视频国产精品一区二区| 欧洲亚洲一区|