[問題] 基礎Pointer問題 LC2807

看板C_and_CPP (C/C++)作者 (CPP IS GOD)時間6月前 (2024/06/07 16:59), 6月前編輯推噓4(4020)
留言24則, 8人參與, 6月前最新討論串1/2 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) Windows 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) VS 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 程式碼中的(1)是正確的寫法,但不了解為什麼(2)的寫法不行 想法是ListNode n()完後,讓ptr=&n,但結果是錯的 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): https://ideone.com/Gb60BJ 程式碼(Code): https://ideone.com/i5eC0B 補充說明(Supplement): 先謝謝各位前輩了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.180.216 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1717750767.A.09F.html

06/07 17:33, 6月前 , 1F
寫法1的東西放在heap,寫法2的會放在stack
06/07 17:33, 1F

06/07 17:49, 6月前 , 2F
想想n什麼時候會解構,進而造成一些麻煩
06/07 17:49, 2F

06/07 17:51, 6月前 , 3F
寫法2 n的lifetime只到該次迴圈結束
06/07 17:51, 3F

06/07 19:15, 6月前 , 4F
物件的生命週期不同
06/07 19:15, 4F
哇 一語驚醒夢中人! 感謝樓上前輩們的指點!! ※ 編輯: CppGod (123.194.180.216 臺灣), 06/07/2024 22:03:26

06/07 22:16, 6月前 , 5F
看了一下,好奇為什麼這題是medimum 0.0
06/07 22:16, 5F

06/07 22:16, 6月前 , 6F
是因為對外國人來說算GCD比較困難?
06/07 22:16, 6F

06/08 07:28, 6月前 , 7F
我猜應該是把兩件事 (GCD 跟鏈結串列插入) 合起來的關係?
06/08 07:28, 7F

06/08 11:58, 6月前 , 8F
要找本基礎書看,建議
06/08 11:58, 8F

06/08 11:59, 6月前 , 9F

06/08 20:38, 6月前 , 10F
我還是覺得這題應該是easy~ 雖然沒寫過但10分內可以秒掉
06/08 20:38, 10F

06/08 20:39, 6月前 , 11F
另外給個刷題的建議(這個建議無關程式正確與否,只是關乎
06/08 20:39, 11F

06/08 20:39, 6月前 , 12F
到面試20分鐘內要寫完一個不易出錯的程式),盡量不要用
06/08 20:39, 12F

06/08 20:40, 6月前 , 13F
while(ptr->next != NULL)這種判斷,容易錯,最好是讓ptr
06/08 20:40, 13F

06/08 20:40, 6月前 , 14F
一開始就先往前跳一個node,while只判斷ptr != NULL,另
06/08 20:40, 14F

06/08 20:40, 6月前 , 15F
外也盡量不要用ptr->next->next這種一個next再一個next的
06/08 20:40, 15F

06/08 20:41, 6月前 , 16F
寫法,哪天你不小心while只判斷ptr!=null時,那個ptr->
06/08 20:41, 16F

06/08 20:41, 6月前 , 17F
next->next就GG惹,重申一次,我給的這個建議只跟面試刷
06/08 20:41, 17F

06/08 20:41, 6月前 , 18F
題有關,能確保一開始就寫出不容易錯的code,不用debug
06/08 20:41, 18F

06/08 20:46, 6月前 , 19F
這題就先判斷head是不是null,事就直接return,接下來
06/08 20:46, 19F

06/08 20:46, 6月前 , 20F
ListNode *prev = head; ListNode *cur= head->next
06/08 20:46, 20F

06/08 20:46, 6月前 , 21F
用while(cur) {......; cur = cur->next}去玩就好
06/08 20:46, 21F

06/08 20:47, 6月前 , 22F
保持這種寫法,將來遇到複雜的LinkedList操作就不易出錯
06/08 20:47, 22F

06/08 20:48, 6月前 , 23F
while裡面當然也要繼續maintain prev
06/08 20:48, 23F

06/14 00:51, 6月前 , 24F
感謝wu大分享書單 & 感謝peter大教學
06/14 00:51, 24F
文章代碼(AID): #1cOill2V (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1cOill2V (C_and_CPP)