作者kaneson (Lance)
看板C_and_CPP
標題Re: [問題] 請教反轉串列
時間Tue Apr 16 17:27:47 2013
※ 引述《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