[理工]98台大電機DS數題

作者: DZASHIANG (DZASHIANG)   2016-11-08 01:30:03
http://i.imgur.com/3LFoeKU.jpg
請問第四題的b為什麼是true
http://i.imgur.com/v42NsvL.jpg
第六題的c為什麼false
http://i.imgur.com/5sx4zbD.jpg
第十六題的a為什麼true,若紅黑樹中樹葉是紅的->無children->false 這樣的推論成立嗎
拜託各位高手~謝謝 答案是參考手邊別人寫的解答
作者: gigayaya (gigayaya)   2016-11-08 02:27:00
作者: ken52011219 (呱)   2016-11-08 04:49:00
紅黑樹external node 必有兩black nil6(c 應該是指 circular queue 會更好吧
作者: aa06697 (todo se andarà)   2016-11-10 13:46:00
一樓不能這樣看 題目記體空間跟你寫的是不一樣的不過4 b應該是false沒錯 *x會是912 x是8067 c 是因為 一般queue 是從rear差值進去 如果你把head 放front 等於每次插入刪除 都要先從front 跑到rear再改指標如果head 放rear 直接改指標就好更正 6 c抱歉再更正qq 是只有插入的時候插入次數一定>=刪除次數 所以對於插入的效率較好者會較佳我是這樣想的~
作者: ken52011219 (呱)   2016-11-10 14:12:00
這樣子感覺用Circular link回來就更省事了令Delete + Insert = n times,Delete為 O(1)Insert O(n) O(n*(x))+O(n*(x-n))=O(nx)而Circular Insert or Delete 皆為 O(1)總運算 頂多O(n) 用單純link worst case為O(n^2)話說可以問一下為什麼是912嗎@@? 912是x[3]的addr吧更正 x[3]的content
作者: aa06697 (todo se andarà)   2016-11-11 14:29:00
沒錯呀 x的address是800 因為x是pointer 放的content:806是address *x會去取806的content 所以是912 有點久沒寫要處理指標的語言了....有誤還請更正是說E比較詭異XD 剛剛想說一個存在register內的consrant要怎麼取址 試了一下果然compile不了 會當成是and 運算元
作者: ken52011219 (呱)   2016-11-11 15:33:00
所以因為是pointer 所以會+6 嗎會想問這個是因為我記得 cont *x 應該是讀取它的addr假若因為Pointer的關係了話 cont *x 應該是806而 x[0] 的content 也是 806 這題就是true了沒事 我記錯了 qq~

Links booklink

Contact Us: admin [ a t ] ucptt.com