看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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