/**
* n -> 節點總個數
* k -> 要求翻轉的子鏈節點個數
* data[100005] -> 結點儲存的整數資料
* list[100005] -> 儲存輸入節點
* sum -> 計數器,因為所輸入的節點並不一定有用
* 儲存在data,next陣列中,然後將每個節點的內容進行鏈結,儲存在list陣列中,根據k值,通過reverse()
* 進行資料的反轉,最後按照輸出格式依次輸出節點,並輸出最後節點。
* * 2.reverse(beg,end):將區間[beg,end)內的元素全部逆序
* *
*/#include #include using namespace std;
int main()
int sum = 0;//不一定所有的輸入的結點都是有用的,加個計數器
//將節點進行連線
while (first != -1)
//節點反轉
for (int i = 0; i < (sum - sum % k); i += k)
reverse(begin(list) + i, begin(list) + i + k);
//輸出節點
for (int i = 0; i < sum - 1; i++)
printf("%05d %d %05d\n", list[i], data[list[i]], list[i + 1]);
//輸出最後的節點
printf("%05d %d -1", list[sum - 1], data[list[sum - 1]]);
return 0;
}
1025 反轉鍊錶
在這道題中這其實是一道偽反轉鍊錶的題目,因為每乙個節點中其實沒有儲存指標的值,所以可以使用vector reverse來配合 自己的解法 給定乙個常數k以及乙個單鏈表l,請編寫程式將l中每k個結點反轉。例如 給定l為1 2 3 4 5 6,k為3,則輸出應該為3 2 1 6 5 4 如果k為4,則輸...
1025 反轉鍊錶
1025.反轉鍊錶 給定乙個常數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行給出第...
1025 反轉鍊錶
給定乙個常數 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 個測試用例。每個測試用例...