L2 022 重排鍊錶

2021-07-30 23:08:07 字數 1377 閱讀 6419

給定乙個單鏈表 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

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

00100 6

00000 4 99999

00100 1 12309

68237 6 -1

33218 3 00000

99999 5 68237

12309 2 33218

68237 6 00100

00100 1 99999

99999 5 12309

12309 2 00000

00000 4 33218

33218 3 -1

別忘了計算鍊錶長度,可能輸入的結點中有不屬於這個鍊錶的結點。

#include 

using

namespace

std;

class node

};node map[100001];

int main()

int m = 1;

int now = head;

int temp;

int last = -1;

// 計算長度

int length = 0;

while (now != -1)

now = head;

// 分割後半部分

while (now != -1)

now = map[now].next;

m++;

}// 倒置第二個鍊錶

int p = last, q = map[last].next, t = -1;

while (q != -1)

map[p].next = t;

last = p;

// 二個鍊錶交叉合併

now = head;

head = last;

int templast, tempnow;

while (now != -1 && last != -1)

// 輸出鍊錶

now = head;

while (now != -1) else

now = map[now].next;

}return

0;

}

L2 022 重排鍊錶

時間限制 500 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越給定乙個單鏈表 l1 l2 ln 1 ln,請編寫程式將鍊錶重新排列為 ln l1 ln 1 l2 例如 給定l為1 2 3 4 5 6,則輸出應該為6 1 5 2 4 3。輸入格式 ...

L2 022 重排鍊錶

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個結點的位址和結點總個數,...

L2 022 重排鍊錶

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