Re: [問題] 請教反轉串列

看板C_and_CPP作者 (Lance)時間11年前 (2013/04/16 17:27), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《WindSkyBlue ( )》之銘言: : 題目如圖http://ppt.cc/Y_2D : 看不太懂他的return concatenate(reverse(tail),head) : 代表的意思,以下是我的寫法,感覺錯很大 : listnode concatenate(listnode *point,listnode *back) : { : listnode forward; //用來指point的下一個node : forward = point.link; //先指到tail的下一個node : point.link = back; //開始反轉 : back = point; : point = forward; : return point; //回傳point回reverse : } : 還麻煩大大指點一番,謝謝 題目是用遞迴做reverse, 可以想像成把火車箱從前面一節一節切開, 切到沒得切再從後面一節一節反接回來. listnode concatenate( listnode list_a, listnode list_b ) { if ( list_a == null ) return list_b ; listnode temp = list_a ; while ( temp.link != null ) temp = temp.link ; temp.link = list_b ; return list_a ; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.80.4

04/16 18:16, , 1F
感謝回覆!不過有點看不懂while那裡的意思,可以麻煩
04/16 18:16, 1F

04/16 18:16, , 2F
稍微解說一下嗎?
04/16 18:16, 2F

04/16 21:17, , 3F
就是從火車頭沿著車箱一節一節往後找到後面沒人接的車廂
04/16 21:17, 3F

04/16 21:17, , 4F
所以在 while 之後的 temp.link = list_b 就是把那節車廂
04/16 21:17, 4F

04/16 21:18, , 5F
連上 list_b 這串火車
04/16 21:18, 5F
文章代碼(AID): #1HRHcM0h (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1HRHcM0h (C_and_CPP)