天梯賽 L2 022 重排鍊錶 25分

2021-10-10 22:30:02 字數 1580 閱讀 2112

題目描述

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

輸入格式:

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

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

address data 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

設定乙個node結構體儲存節點的鍵值和下乙個節點的位址;分別設ans[10005] 和 res[100005]儲存原鍊錶和重新排序後的鍊錶;然後順序輸出就可以了。

int ans[

100005

], k =0;

//儲存原來的鍊錶

int p = head;

while

(p !=-1

)

#include

using

namespace std;

struct nodelist[

100005];

intmain()

int ans[

100005

], k =0;

//儲存原來的鍊錶

int p = head;

while

(p !=-1

)int res[

100005

], k2 =0;

//儲存新的鍊錶

for(

int i = k-

1; i >

0; i--

)for

(int i =

1; i < k; i++

)printf

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

,res[k-1]

, list[res[k-1]

].data)

;}

天梯賽L2 022 重排鍊錶

開局一把wa,ac全靠carry.看了大神的提示才知道還有無效結點qaq,不過也就乙個測試點有。發個部落格記錄一下,姥姥這麼厲害的測試資料都能想到也是很佩服,開拓眼界開拓眼界。includeusing namespace std struct nodenode 101000 node2 101000...

L2 022 重排鍊錶 (25 分)

給定乙個單鏈表 l 1 l 2 l n 1 l n 請編寫程式將鍊錶重新排列為 l n l 1 l n 1 l 2 例如 給定l為1 2 3 4 5 6,則輸出應該為6 1 5 2 4 3。輸入格式 每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的位址和結點總個數,即正整數n 10 5 ...

L2 022 重排鍊錶 25分

給定乙個單鏈表 l 1 l 2 l n 1 l n 請編寫程式將鍊錶重新排列為 l n l 1 l n 1 l 2 例如 給定l為1 2 3 4 5 6,則輸出應該為6 1 5 2 4 3。每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的位址和結點總個數,即正整數n 10 5 結點的位址...