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

基于二叉樹的將中綴表達式轉(zhuǎn)換為前綴表達式的方法

2012-01-10 03:35:34

胡 云

(無錫廣播電視大學(xué),江蘇無錫 214011)

0 引 言

運算符和運算對象是表達式的兩個組成部分,根據(jù)運算符計算對象的數(shù)量將其分為單目運算符、雙目運算符和三目運算符[1-3].為便于理解,本研究僅討論由雙目運算符構(gòu)成的表達式.根據(jù)運算符和運算對象的相對位置關(guān)系可以將表達式分為前綴表達式、中綴表達式和后綴表達式.實際應(yīng)用中,使用頻率最高的是中綴表達式,其運算符的兩個運算對象一個置于前面,另一個置于后面.人們習(xí)慣使用這種表達式形式,直觀上求值也相對容易,但在計算機上對其求值,因為同時要考慮運算符的優(yōu)先級和結(jié)合性,就顯得比較困難.對此,本研究提出一種基于二叉樹的轉(zhuǎn)換方法.

1 傳統(tǒng)的轉(zhuǎn)換方法

通常,將中綴表達式轉(zhuǎn)換為前綴表達式的方法是:把每個運算符的兩個運算對象都移到它的后面,然后去除掉所有的括號.因此在前綴表達式中,沒有括號運算符,也沒有優(yōu)先級的差別.本研究討論的運算符及其優(yōu)先級如表1所示.

表1 各個算術(shù)運算符的優(yōu)先級

表1中,osp稱為棧外優(yōu)先級,isp稱為棧內(nèi)優(yōu)先級.右括號′)′具有最高的棧外優(yōu)先級,處理時一遇到′)′立即將其壓入棧內(nèi),進棧后,其棧內(nèi)優(yōu)先級變得很低,僅高于′#′,其目的是便于括號內(nèi)的其它運算符進棧.其它運算符進棧后優(yōu)先級數(shù)都減1.運算符優(yōu)先級相等的情況只出現(xiàn)在括號匹配或棧底的′#′號與輸入流最后的′#′號匹配時.前者將連續(xù)彈出位于棧頂?shù)倪\算符,直至遇到′)′為止.然后將′)′退棧以成對消除括號,后者將結(jié)束算法.

轉(zhuǎn)換后,表達式中運算對象的次序不變,而運算符的次序發(fā)生了變化,由處在兩個操作對象的中間變?yōu)樘幵趦蓚€運算對象的前面,同時去掉了所有的括號.轉(zhuǎn)換過程使用兩個棧,一個用來存放運算符,另一個用來保存轉(zhuǎn)換得到的結(jié)果.對于存放運算符的棧,先要在棧底放一個特殊運算符,假定為′#′字符,讓它具有最低的運算符優(yōu)先級,假定為數(shù)值0.對中綴表達式字符串的掃描是從后向前進行的.

算法具體描述如下:

(1)運算符棧R和保存結(jié)果的棧D初始化,將結(jié)束符′#′壓入棧R,然后讀入中綴表達式字符串的最后一個字符ch.

(2)重復(fù)執(zhí)行以下步驟,直到第一個字符:①若ch是運算對象直接壓入棧D,讀入前一個字符到ch.②若ch是運算符,判斷ch的優(yōu)先級osp和棧R的棧頂運算符op的優(yōu)先級isp:若osp(ch)>isp(op),將ch壓入棧R,讀入前一個字符到ch;若osp(ch)< isp(op),將棧R出棧的元素壓入到棧D中,繼續(xù)執(zhí)行步驟②;若osp(ch)=isp(op),說明ch是字符′(′,對棧R執(zhí)行退棧操作,讀入前一個字符到ch.

(3)將棧R中各個元素依次出棧,再壓入到棧D中,直到出棧元素是字符′#′,然后將棧D各個元素依次出棧輸出,即得到轉(zhuǎn)換后的前綴表達式.

設(shè)以′#′字符作為結(jié)束符的中綴表達式已經(jīng)保存在s1字符串中,轉(zhuǎn)換后得到的前綴表達式存于s2字符串中.由中綴表達式轉(zhuǎn)換為前綴表達式的規(guī)則可知:為了使轉(zhuǎn)換正確,需要設(shè)定2個棧.

將字符串s1表示的中綴表達式轉(zhuǎn)為前綴表達式算法的基本操作方法是,從后向前掃描中綴表達式中的每個字符,對不同類型的字符分別進行處理.設(shè)定一個標識flag,如果掃描到的是非數(shù)值字符則將flag置為0;如掃描到的是數(shù)值字符則將flag置為1.設(shè)定2個棧,一個是存放運算符的棧R,另一個是保存轉(zhuǎn)換結(jié)果的棧D.如果掃描到的是空格,則看成分隔符,無需進行處理;若掃描到的是右括號,則將其壓入棧R中,等到以它為結(jié)束符的括號內(nèi)的表達式轉(zhuǎn)換完畢后再彈出棧,同時將flag置為0;若掃描到的是左括號,則說明括號內(nèi)的中綴表達式已經(jīng)轉(zhuǎn)換結(jié)束,將棧R中從棧頂直到對應(yīng)右括號之間的運算符依次出棧并壓入棧D內(nèi),同時將flag置為0;若掃描到的是運算符,并且該運算符的優(yōu)先級不小于棧R的棧頂運算符的優(yōu)先級時,將它壓入棧R內(nèi),同時將flag置為0;若掃描到的運算符的優(yōu)先級小于棧R的棧頂運算符的優(yōu)先級時,將棧R的棧頂運算符出棧并壓入棧D中,直到棧R的棧頂運算符的優(yōu)先級大于或等于當前運算符的優(yōu)先級為止,然后將運算符壓入棧R內(nèi),同時將flag置為0;當中綴表達式字符串掃描結(jié)束時將棧R中剩余的所有元素依次出棧并壓入棧D內(nèi),最后將棧D中元素依次出棧保存在字符串s2中,再向s2末尾加上表達式結(jié)束符′#′和字符串結(jié)束符′

主站蜘蛛池模板: 亚洲国产综合精品一区| 国产成人乱无码视频| 午夜福利亚洲精品| 国产精品成人AⅤ在线一二三四| 国内精品自在自线视频香蕉| 原味小视频在线www国产| 国产99免费视频| 国产女人18水真多毛片18精品| 99人妻碰碰碰久久久久禁片| 搞黄网站免费观看| 中文字幕免费视频| 播五月综合| 97久久精品人人做人人爽| 国产男女免费视频| 一级一级一片免费| 爱色欧美亚洲综合图区| 国产在线91在线电影| 亚洲视频影院| 久久婷婷五月综合97色| av在线无码浏览| 久久伊人久久亚洲综合| av免费在线观看美女叉开腿| 老司国产精品视频91| 中国精品自拍| a毛片免费看| 亚洲AV无码精品无码久久蜜桃| 黄色网站在线观看无码| 日本午夜视频在线观看| 国内老司机精品视频在线播出| 欧美成人精品高清在线下载| 91九色国产在线| 日本三级欧美三级| 71pao成人国产永久免费视频| 欧美日韩中文国产va另类| 亚洲一区二区三区香蕉| 久久久成年黄色视频| 五月天福利视频| 亚洲综合九九| 综合色88| a在线观看免费| 亚洲欧美一区二区三区图片| 国产精品无码翘臀在线看纯欲| 人妻丰满熟妇av五码区| 欧美一级高清片欧美国产欧美| 一级香蕉视频在线观看| 黑色丝袜高跟国产在线91| 91成人在线免费视频| 婷婷色狠狠干| 亚洲国产日韩视频观看| 一级黄色片网| 精品久久人人爽人人玩人人妻| 久久精品电影| 2021国产v亚洲v天堂无码| 在线无码私拍| 亚洲中文字幕在线观看| 干中文字幕| 在线人成精品免费视频| 国产男女免费完整版视频| 国产欧美精品一区二区 | 国产成人亚洲无码淙合青草| 亚洲侵犯无码网址在线观看| 又粗又大又爽又紧免费视频| 婷婷综合色| 亚洲欧美综合另类图片小说区| 国产精品伦视频观看免费| 欧美一级在线| 最新无码专区超级碰碰碰| 亚洲国产精品成人久久综合影院| 韩日午夜在线资源一区二区| 精品无码国产一区二区三区AV| 天天激情综合| 日韩免费成人| 国产免费久久精品44| 精品无码国产自产野外拍在线| 伊人久久综在合线亚洲91| 免费在线a视频| 亚洲美女AV免费一区| 免费毛片网站在线观看| 亚洲视频免费在线| 国产乱子伦无码精品小说| 国内精品免费| 国产网友愉拍精品视频|