PAT 反轉鍊錶1015

2021-10-14 11:00:15 字數 761 閱讀 6285

反轉鍊錶

定義乙個node用來存放資料data和下一位址next,為了通過乙個節點的位址來找到這個節點,容易想到的辦法是讓這個位址就是他的陣列下標。所以在輸入節點時,先輸入節點的位址temp,再用vector來存放每次輸入的結點的資料傳data和下一節點的位址next

每k個節點呼叫一次reverse做反轉

#include

#define maxn 100010

using

namespace std;

struct node

;int

main()

int p=head,num=0;

int list[maxn]

;while

(p!=-1

)//做反轉

for(

int i=

0;i+k=k)reverse

(&list[i]

,&list[i+k]);

for(

int i=

0;i1;i++

)printf

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

,list[i]

,v[list[i]

].data,list[i+1]

);printf

("%05d %d -1"

,list[num-1]

,v[list[num-1]

].data)

;return0;

}

參考:

PAT 1015 反轉鍊錶(25)

感覺這是30道真題裡最難的一道了,比其他25分的題主要難在它的陷阱太多,題目並沒有明確指出,用了好久才ac,看到所有測試點都不紅了,激動。經過多次嘗試,總結的陷阱主要有 1.看清題意!看清鍊錶如何反轉!2.首位址為 1的情況分類出來 3.輸出最後乙個節點是next必須為 1.4.輸入的節點中的無效節...

1015 反轉鍊錶 C

題目 題目描述 給定乙個常數k以及乙個單鏈表l,請編寫程式將l中每k個結點反轉。例如 給定l為1 2 3 4 5 6,k為3,則輸出應該為 3 2 1 6 5 4 如果k為4,則輸出應該為4 3 2 1 5 6,即最後不到k個元素不反轉。輸入描述 每個輸入包含1個測試用例。每個測試用例第1行給出第1...

PAT 反轉鍊錶

給定乙個常數k以及乙個單鏈表l,請編寫程式將l中每k個結點反轉。例如 給定l為1 2 3 4 5 6,k為3,則輸出應該為3 2 1 6 5 4 如果k為4,則輸出應該為4 3 2 1 5 6,即最後不到k個元素不反轉。輸入格式 每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的位址 結點...