作者s890269 (賽)
看板C_and_CPP
標題[問題] 鏈結串列,加入新節點在頭端
時間Sun Apr 14 18:19:11 2019
開發平台(Platform): (Ex: Win10, Linux, ...)
Win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我創建了一個初始串列,其內容為1->2->3->nullptr
然後想新增一個新的串列在初始串列的頭端,
預期的結果為0.5->1->2->3->nullptr
我試了兩種打法,一種是使用副函式的形式,另一種則是直接打在主函式內
在主函式內成功,並且印出串列為0.5->1->2->3
但在副函式內完成,印出的串列卻是1->2->3
想請問一下問題在哪裡?
餵入的資料(Input):
鏈結串列 1->2->3->nullptr
預期的正確結果(Expected Output):
0.5->1->2->3
錯誤結果(Wrong Output):
1->2->3
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
撰寫在主函式內
https://ideone.com/Uq3MFP
撰寫在副函式內
https://ideone.com/RPwGvy
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.112.1
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1555237156.A.D9D.html
推 b0920075: 這兩個code不是一樣嗎....?還是我眼花了 04/14 18:41
※ 編輯: s890269 (111.241.112.1), 04/14/2019 19:22:59
→ s890269: 我剛剛發現貼錯了,現在已經修改程式碼連結了 04/14 19:23
→ firejox: 你那是傳指標值,需要有return 指標 04/14 19:25
→ sarafciel: insert_head(node *list) -> insert_head(node *&list) 04/14 19:41
→ s890269: 感謝大家幫忙,f大和s大的方法都可以,但我有試過在中間 04/14 20:24
→ s890269: 插入節點,參數用node*即可,是因為對開頭做修改的差別? 04/14 20:27
→ sarafciel: 精確點講 你原本的寫法是把開頭指標複製一份 然後修改 04/14 20:41
→ sarafciel: 到複製的那一份指標 所以原本的那個指標沒有被影響 04/14 20:42
→ sarafciel: 而他們後面指到的東西你並沒有複製 所以在後面作插入會 04/14 20:43
→ sarafciel: 兩邊都看到 04/14 20:43
推 gaexpa066454: 你的head指向哪? 04/15 20:32
推 Gway: 請傳list 的address 給 fun 因為你只傳pointer 會是call by 04/16 17:46
→ Gway: value 傳遞 04/16 17:46