看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
WindSkyBlue:感謝回覆!不過有點看不懂while那裡的意思,可以麻煩 04/16 18:16
WindSkyBlue:稍微解說一下嗎? 04/16 18:16
LPH66:就是從火車頭沿著車箱一節一節往後找到後面沒人接的車廂 04/16 21:17
LPH66:所以在 while 之後的 temp.link = list_b 就是把那節車廂 04/16 21:17
LPH66:連上 list_b 這串火車 04/16 21:18