pta重排鍊錶

2021-09-22 22:31:31 字數 875 閱讀 3162

本文提供pta重排鍊錶的兩種方法,兩種都是使用陣列模擬鍊錶的操作,區別在與所使用空間的大小不同,從而導致時間複雜度也不同。

重排鍊錶的第一種方法:

這種方法節省了很多空間,但在n非常大時會超時。

#include#include#includetypedef struct node* list;

struct node ;

int main()

} for (i = 1; i < n && l1[a[i - 1]].next != -1; i++)

} }if (i < n) n = i;

for (i = 0; i < n / 2; i++)

if (n % 2 == 1) printf("%05d %d %d\n", l1[a[n / 2]].adr, l1[a[n / 2]].data, -1);

return 0;

}

第二種方法:使用陣列模擬鍊錶操作,占用較大空間但時間複雜度小。

#include#include#includetypedef struct node list;

list l[100000];

list res[100000];

int main()

adr = fadr;

rnum = 0;

while (adr != -1)

for (i = 0; i < rnum / 2; i++)

if (n % 2 == 1) printf("%05d %d %d\n", res[rnum / 2].adr, res[rnum / 2].data, -1);

return 0;

}

PTA 重排鍊錶 陣列法)

給定乙個單鏈表 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位非負整數,n...

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,重新排列為 ...