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

作者: s890269 (賽)   2019-04-14 18:19:11
開發平台(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):
作者: b0920075 (Void)   2019-04-14 18:41:00
這兩個code不是一樣嗎....?還是我眼花了
作者: s890269 (賽)   2019-04-14 19:23:00
我剛剛發現貼錯了,現在已經修改程式碼連結了
作者: firejox (Tangent)   2019-04-14 19:25:00
你那是傳指標值,需要有return 指標
作者: sarafciel (Cattuz)   2019-04-14 19:41:00
insert_head(node *list) -> insert_head(node *&list)
作者: s890269 (賽)   2019-04-14 20:24:00
感謝大家幫忙,f大和s大的方法都可以,但我有試過在中間插入節點,參數用node*即可,是因為對開頭做修改的差別?
作者: sarafciel (Cattuz)   2019-04-14 20:41:00
精確點講 你原本的寫法是把開頭指標複製一份 然後修改到複製的那一份指標 所以原本的那個指標沒有被影響而他們後面指到的東西你並沒有複製 所以在後面作插入會兩邊都看到
作者: gaexpa066454 (玄)   2019-04-15 20:32:00
你的head指向哪?
作者: Gway (我愛的你 也愛我 好嗎?)   2019-04-16 17:46:00
請傳list 的address 給 fun 因為你只傳pointer 會是call byvalue 傳遞

Links booklink

Contact Us: admin [ a t ] ucptt.com