1025 反轉鍊錶

2021-10-01 01:31:11 字數 949 閱讀 1553

/**

* 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 個測試用例。每個測試用例...