[問題] 實作BST和while(1)的用法

看板C_and_CPP (C/C++)作者 (哈姆妍)時間8年前 (2017/12/17 12:01), 8年前編輯推噓8(806)
留言14則, 8人參與, 8年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Windows 10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 問題(Question): 小弟現在在寫學校資結的作業 因為題目需要 順便練習一下寫BST (是說我們DS的實作超級少 整學期到現在才寫過一次程式作業 我讀的學校應該也算不錯的了 還是其實四大四中的DS上法都差不多 大家覺得這樣正常嗎@@) 目前主要有兩個疑問 一個是插入新node時用到的迴圈 我的想法主要是這樣: 先判斷大小 比較小: 左子樹沒東西->塞進去之後break 左子樹有東西->移動current到左子樹 比較大: 右子樹沒東西->塞進去之後break 右子樹有東西->移動current到右子樹 寫成code是39~61行 跑起來也沒有問題 但是這樣就要用到while(1)或是for(;;) 感覺出現無窮迴圈code就會容易爆炸XD 不知道有沒有方法可以改寫成有固定終止條件的while或是do-while 另外一個問題是如果我要幫我的BST寫destructor的話 是用類似traversal的方式走到底之後針對每個TreeNode去呼叫delete嗎 我目前想到如果是這樣 應該是要post-order? 就是最後才刪自己才不會讓下面的node都變成無法存取的狀態 問題有點多 先謝謝板友們的解答XD 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/MIIdzStc -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.105.64.234 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1513483286.A.751.html

12/17 12:31, 8年前 , 1F
if-break
12/17 12:31, 1F

12/17 12:36, 8年前 , 2F
你想太多了... 你訂的終止條件不就是找到一個適當位置之後
12/17 12:36, 2F

12/17 12:36, 8年前 , 3F
插入新的節點然後break? 那無窮迴圈會在何時發生?
12/17 12:36, 3F

12/17 13:43, 8年前 , 4F
1.現在的是對的 2.是
12/17 13:43, 4F

12/17 15:32, 8年前 , 5F
不一定有作業才要有寫,你平常就可以當練習了
12/17 15:32, 5F
也是啦 但大學生就是沒有作業或考試就懶的讀書QQ

12/17 19:45, 8年前 , 6F
While true是很常見的用法,你如果怕進入無窮迴圈就代表code
12/17 19:45, 6F

12/17 19:45, 8年前 , 7F
有bug,當然要避免寫錯
12/17 19:45, 7F

12/17 19:48, 8年前 , 8F
作業少的話有些書本上面有附習題,可以做做看
12/17 19:48, 8F
謝謝cphe大跟前幾樓的galic大 原來while true很常見嗎XD 我就是怕會不會一般寫程式是不是不建議這樣的用法@@

12/17 20:15, 8年前 , 9F
可以用遞迴
12/17 20:15, 9F

12/17 20:15, 8年前 , 10F
函數刪除左右子節點
12/17 20:15, 10F
好 看起來跟我想的差不多 (? 我研究一下~ ※ 編輯: Brothre23 (1.162.125.240), 12/18/2017 00:44:00

12/19 12:46, 8年前 , 11F
112DS是一下的課,而且很c嗚嗚
12/19 12:46, 11F

12/19 12:48, 8年前 , 12F
作業看班,五到六次上下,還有期末project
12/19 12:48, 12F

12/19 13:01, 8年前 , 13F
不錯了啦 116到大三了還不會寫程式 只會考試...
12/19 13:01, 13F

12/20 08:37, 8年前 , 14F
while true+break阿
12/20 08:37, 14F
文章代碼(AID): #1QDUmMTH (C_and_CPP)
文章代碼(AID): #1QDUmMTH (C_and_CPP)