#include <iostream>
using namespace std;
struct List {
int value = 0;
List* next = nullptr;
List(int x) : value(x) {}
};
List* reverse(List* head) {
List* next = head->next;
head->next = nullptr;
while (next != nullptr) {
List* movingHead = next->next;
next->next = head;
head = next;
next = movingHead;
}
return head;
}
int main() {
List* head = new List(1);
List* list = head;
for (int index = 2; index < 10; index++) {
List* next = new List(index);
list->next = next;
list = next;
}
head = reverse(head);
while (head != nullptr) {
printf("%d\n", head->value);
head = head->next;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IExpc3QgewoJaW50IHZhbHVlID0gMDsKCUxpc3QqIG5leHQgPSBudWxscHRyOwoJTGlzdChpbnQgeCkgOiB2YWx1ZSh4KSB7fQp9OwoKTGlzdCogcmV2ZXJzZShMaXN0KiBoZWFkKSB7CglMaXN0KiBuZXh0ID0gaGVhZC0+bmV4dDsKCWhlYWQtPm5leHQgPSBudWxscHRyOwoJd2hpbGUgKG5leHQgIT0gbnVsbHB0cikgewoJCUxpc3QqIG1vdmluZ0hlYWQgPSBuZXh0LT5uZXh0OwoJCW5leHQtPm5leHQgPSBoZWFkOwoJCWhlYWQgPSBuZXh0OwoJCW5leHQgPSBtb3ZpbmdIZWFkOwoJfQoJcmV0dXJuIGhlYWQ7Cn0KCmludCBtYWluKCkgewoJTGlzdCogaGVhZCA9IG5ldyBMaXN0KDEpOwoJTGlzdCogbGlzdCA9IGhlYWQ7Cglmb3IgKGludCBpbmRleCA9IDI7IGluZGV4IDwgMTA7IGluZGV4KyspIHsKCQlMaXN0KiBuZXh0ID0gbmV3IExpc3QoaW5kZXgpOwoJCWxpc3QtPm5leHQgPSBuZXh0OwoJCWxpc3QgPSBuZXh0OwoJfQoJaGVhZCA9IHJldmVyc2UoaGVhZCk7CgkKCXdoaWxlIChoZWFkICE9IG51bGxwdHIpIHsKCQlwcmludGYoIiVkXG4iLCBoZWFkLT52YWx1ZSk7CgkJaGVhZCA9IGhlYWQtPm5leHQ7Cgl9CglyZXR1cm4gMDsKfQ==