[問題] 鏈結串列,加入新節點在頭端

看板C_and_CPP作者 (賽)時間5年前 (2019/04/14 18:19), 5年前編輯推噓3(3010)
留言13則, 6人參與, 5年前最新討論串1/1
開發平台(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

04/14 18:41, 5年前 , 1F
這兩個code不是一樣嗎....?還是我眼花了
04/14 18:41, 1F
※ 編輯: s890269 (111.241.112.1), 04/14/2019 19:22:59

04/14 19:23, 5年前 , 2F
我剛剛發現貼錯了,現在已經修改程式碼連結了
04/14 19:23, 2F

04/14 19:25, 5年前 , 3F
你那是傳指標值,需要有return 指標
04/14 19:25, 3F

04/14 19:41, 5年前 , 4F
insert_head(node *list) -> insert_head(node *&list)
04/14 19:41, 4F

04/14 20:24, 5年前 , 5F
感謝大家幫忙,f大和s大的方法都可以,但我有試過在中間
04/14 20:24, 5F

04/14 20:27, 5年前 , 6F
插入節點,參數用node*即可,是因為對開頭做修改的差別?
04/14 20:27, 6F

04/14 20:41, 5年前 , 7F
精確點講 你原本的寫法是把開頭指標複製一份 然後修改
04/14 20:41, 7F

04/14 20:42, 5年前 , 8F
到複製的那一份指標 所以原本的那個指標沒有被影響
04/14 20:42, 8F

04/14 20:43, 5年前 , 9F
而他們後面指到的東西你並沒有複製 所以在後面作插入會
04/14 20:43, 9F

04/14 20:43, 5年前 , 10F
兩邊都看到
04/14 20:43, 10F

04/15 20:32, 5年前 , 11F
你的head指向哪?
04/15 20:32, 11F

04/16 17:46, 5年前 , 12F
請傳list 的address 給 fun 因為你只傳pointer 會是call by
04/16 17:46, 12F

04/16 17:46, 5年前 , 13F
value 傳遞
04/16 17:46, 13F
文章代碼(AID): #1SimaasT (C_and_CPP)