[問題] 傳空List進function,產生新List

作者: Hyozero (1)   2017-05-23 01:55:27
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
給定一個function的定義: bool NewList(List *head);
head為一個list的first node,但故意傳一個空的list(head本身就是NULL),
要在function NewList裡面產生一個新node,將它接到傳進來的head,
並讓function NewList外面也能夠使用這個產生的新node
程式碼(Code):(請善用置底文網頁, 記得排版)
https://ideone.com/YgH27x
如上程式碼
考慮到新node要在function外也能使用,因此使用動態記憶體配置的方式產生新node。
但是第33行,把head指向新node,這樣仍然只能在function內使用新node,
第45行的OneNode還是指向NULL,無法使用到function NewList裡面產生的新node,
請問有什麼方法可以達成嗎?
期盼能得到板上大大的指教
感恩
作者: LPH66 (-6.2598534e+18f)   2017-05-23 02:22:00
這樣你傳進 NewList 裡的就必要要是指標的指標bool NewList(List **phead);或是指標的參考 bool NewList(List *&head);
作者: cuteSquirrel (松鼠)   2017-05-23 02:30:00
https://ideone.com/frgL1N推 一樓的解法。Reference 很實用。
作者: pttworld (批踢踢世界)   2017-05-23 08:59:00
http://codepad.org/ZEMLvtq4函數回傳指標的方式似乎是古老寫法。修正上述連結無論如何回傳head,免得有空間被洗掉。
作者: Raymond0710 (雷門)   2017-05-23 17:52:00
至底13戒-13
作者: Hyozero (1)   2017-05-24 20:25:00
請問pttworld大,您連結裡改return head的差別是?
作者: hunandy14 (Charlott.HonG)   2017-05-26 13:17:00
推薦把 new 跟 apeend 函式拆開寫會比較好~http://ideone.com/MRWRtn 這樣 main 比較好操作沒事~好像看錯了你只是在建頭而已

Links booklink

Contact Us: admin [ a t ] ucptt.com