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
倍圖的全符號點控制數
圖的有效符號邊控制數
主站蜘蛛池模板: 亚洲国产精品无码久久一线| 亚洲毛片网站| 欧美黄网在线| 国产美女精品在线| 久久一本日韩精品中文字幕屁孩| 伊人无码视屏| 国产丝袜精品| 欧美激情视频二区三区| 久久黄色毛片| 18禁影院亚洲专区| 国产精品主播| 久久伊人操| 成年人午夜免费视频| 日韩精品无码不卡无码| 伊人久久久大香线蕉综合直播| 国产第三区| 无码精油按摩潮喷在线播放| 成人国内精品久久久久影院| 欧美激情视频在线观看一区| 67194亚洲无码| 国产毛片片精品天天看视频| 国产激爽爽爽大片在线观看| 国产精品视频白浆免费视频| 精品久久国产综合精麻豆| 国产精品亚洲日韩AⅤ在线观看| 国产高清无码麻豆精品| 欧美日韩亚洲综合在线观看| 午夜欧美在线| 欧美在线一二区| 色有码无码视频| 四虎国产成人免费观看| 91区国产福利在线观看午夜| 在线色国产| 国产精品专区第一页在线观看| 亚洲日韩高清无码| 亚洲无码91视频| 日日噜噜夜夜狠狠视频| 国产精品手机在线播放| 国产95在线 | 国产日韩精品欧美一区灰| av一区二区三区高清久久| 国产白浆视频| 国产剧情国内精品原创| 午夜性爽视频男人的天堂| 91色在线观看| 狠狠综合久久久久综| 2022国产91精品久久久久久| 中国成人在线视频| 婷婷色婷婷| m男亚洲一区中文字幕| 久久精品这里只有国产中文精品| 五月婷婷综合网| 国产一区二区影院| 国产毛片片精品天天看视频| 欧美性精品| 美女亚洲一区| 亚洲有无码中文网| a亚洲天堂| 欧美成人区| 人人澡人人爽欧美一区| 午夜在线不卡| 亚洲第一成人在线| 91免费在线看| 亚洲一级毛片| 欧美一区二区三区欧美日韩亚洲| 国产精品久久久久久久伊一| 中文字幕66页| 99久久精品免费看国产免费软件| 亚洲中文在线看视频一区| 成人午夜免费观看| 国产综合欧美| аⅴ资源中文在线天堂| 在线国产三级| 免费观看三级毛片| 久视频免费精品6| 欧美一级高清片久久99| 国产色婷婷| 亚洲天堂久久| 亚洲国产天堂久久综合| 久久中文无码精品| 日韩av无码精品专区| 国产成人久久综合777777麻豆|