字尾表示式計算結果
為了解釋字尾表示式的好處,我們先來看看,計算機如何應用字尾表示式計算出最終的結果as的。字尾表示式:}}z一3*+102/+規則:從左到右遍歷表示式的每個數字和符號,遇到是數字就進棧,遇到是符號,就將處一十棧頂兩個數字出棧,進行運算,運算結果進棧,一直到最終獲得結果。
1.初始化乙個空棧。此棧用來對要運算的數字進出使用。如圖 491 的左圖、
2.字尾表示式中前三個都是數字,所以9, 3, 1進棧,如圖 491 的右圖、
3.接下來是「一」,所以將棧中的1出錢作為減數,3出棧作為被減數,並運算3一得到2,再將2進淺,如圖 492 的左圖所示。
4.接著是數字3進棧,如圖 492 的右圖所示。
5.後面是「*」,也就意味著伐中3和2出棧,棧,如圖 493 的左圖所示。
6.下面是「+』』,所以棧中6和9出棧,9與b 493 的右圖所示。2與3相乘,得到6,並將6進相加,得到i5,將15進棧,如圖
7.接著是1a與2兩數字進棧,如圖 494 的左圖所示。
8.接下來是符號「廠,因此,棧頂的2與1。出棧,io與2相除,得到5,將5進棧,如圖 494 的右圖所示。
9,最後乙個是符號 + 所以15與5出棧並相加,得到20,將2進棧,如圖 495 的左圖所示、
10.結果是20出棧,棧變為空,如圖 495 的右圖所示、
果然,字尾表達法可以很順利解決計算的問題。現在除了睡覺的同學,應該都有同樣的疑問,就是這個字尾表示式「931一3*+1} 2/+』是怎麼出來的?這個問題不搞清楚,等丁沒有解決。所以下面,我們就來推導如何讓「9+ }3一1) x 3+10-2」轉化為「931一3}+10}/+"}
《大話資料結構》
函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...
《大話資料結構》
常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...
《大話資料結構》
線性表 線性表,從某種就能感覺到,是具有像線一樣的性質的表。在廣場上,有很多人分散在各處,當中有些是小朋友,可也有很多大人,甚至還有不少寵物,這些小朋友的資料對整個廣場人群來說,不能算是線性表的結果。但像剛才提到的那樣,乙個班級的小朋友,乙個跟著乙個排著隊,有乙個打頭,有乙個收尾,當中的小朋友,每乙...