diff --git "a/ZJU_MOOC_\346\225\260\346\215\256\347\273\223\346\236\204/02-\347\272\277\346\200\247\347\273\223\346\236\2043 Reversing Linked List (25 \345\210\206).cpp" "b/ZJU_MOOC_\346\225\260\346\215\256\347\273\223\346\236\204/02-\347\272\277\346\200\247\347\273\223\346\236\2043 Reversing Linked List (25 \345\210\206).cpp" new file mode 100644 index 0000000..0177208 --- /dev/null +++ "b/ZJU_MOOC_\346\225\260\346\215\256\347\273\223\346\236\204/02-\347\272\277\346\200\247\347\273\223\346\236\2043 Reversing Linked List (25 \345\210\206).cpp" @@ -0,0 +1,24 @@ +#include +#include +using namespace std; + +int main(){ + int first, n, k, temp; + cin >> first >> n >> k; + int data[100000], next[100000], list[100000]; + for(int i = 0; i < n; i++){ + cin >> temp; + cin >> data[temp] >> next[temp]; + } + int sum = 0; + while(first != -1){ + list[sum++] = first; + first = next[first]; + } + 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; +}