PTA 重排鍊錶 陣列法)

2021-09-27 06:16:30 字數 1447 閱讀 7916

給定乙個單鏈表 l1→l2→⋯→ln−1→ln,請編寫程式將鍊錶重新排列為 ln→l1→ln−1→l2→⋯。例如:給定l為1→2→3→4→5→6,則輸出應該為6→1→5→2→4→3。

每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的位址和結點總個數,即正整數n (≤105)。結點的位址是5位非負整數,null位址用−1表示。

接下來有n行,每行格式為:

address data next
其中address是結點位址;data是該結點儲存的資料,為不超過105的正整數;next是下一結點的位址。題目保證給出的鍊錶上至少有兩個結點。

對每個測試用例,順序輸出重排後的結果鍊錶,其上每個結點佔一行,格式與輸入相同。

00100

600000

499999

00100

112309

682376-

133218

300000

99999

568237

12309

233218

68237

600100

00100

199999

99999

512309

12309

200000

00000

433218

332183-

1

實現**:

#include

#define max 100001

using namespace std;

struct linknode

;int

main

(void

)while

(firstaddress !=-1

) length = count;

for(i =

0, j = length -

1, count =

0; i <= j;

)//開始重排

if(i == j)

else

for(i =

0; i < length -

1; i++

)printf

("%05d %d %05d\n"

, address2[i]

, add[address2[i]

].data, address2[i +1]

);printf

("%05d %d -1\n"

, address2[length -1]

, add[address2[length -1]

].data)

;//控制最後輸出-1

return0;

}

pta重排鍊錶

本文提供pta重排鍊錶的兩種方法,兩種都是使用陣列模擬鍊錶的操作,區別在與所使用空間的大小不同,從而導致時間複雜度也不同。重排鍊錶的第一種方法 這種方法節省了很多空間,但在n非常大時會超時。include include includetypedef struct node list struct ...

leetcode 重排鍊錶

1.使用快慢指標,將鍊錶分成前後兩個部分 listnode fast head listnode slow head while fast null fast.next null listnode mid slow solw指向中間節點 listnode first head listnode se...

重排鍊錶(LeetCode)

題目鏈結 給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 ...