#include <iostream>
struct Node {
int data;
Node* next;
Node(int data) : data(data), next(nullptr) {}
};
Node* reverseLinkedList(Node* head) {
Node* prev = nullptr;
Node* current = head;
Node* next = nullptr;
while (current != nullptr) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
head = prev;
return head;
}
void printLinkedList(Node* head) {
while (head != nullptr) {
std::cout << head->data << " ";
head = head->next;
}
std::cout << std::endl;
}
int main() {
Node* head = new Node(1);
head->next = new Node(2);
head->next->next = new Node(3);
head->next->next->next = new Node(4);
head->next->next->next->next = new Node(5);
std::cout << "Original linked list: ";
printLinkedList(head);
head = reverseLinkedList(head);
std::cout << "Reversed linked list: ";
printLinkedList(head);
while (head != nullptr) {
Node* temp = head;
head = head->next;
delete temp;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIE5vZGUqIG5leHQ7CiAgICAKICAgIE5vZGUoaW50IGRhdGEpIDogZGF0YShkYXRhKSwgbmV4dChudWxscHRyKSB7fQp9OwpOb2RlKiByZXZlcnNlTGlua2VkTGlzdChOb2RlKiBoZWFkKSB7CiAgICBOb2RlKiBwcmV2ID0gbnVsbHB0cjsKICAgIE5vZGUqIGN1cnJlbnQgPSBoZWFkOwogICAgTm9kZSogbmV4dCA9IG51bGxwdHI7CiAgICAKICAgIHdoaWxlIChjdXJyZW50ICE9IG51bGxwdHIpIHsKICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dDsKICAgICAgICBjdXJyZW50LT5uZXh0ID0gcHJldjsKICAgICAgICBwcmV2ID0gY3VycmVudDsKICAgICAgICBjdXJyZW50ID0gbmV4dDsKICAgIH0KICAgIGhlYWQgPSBwcmV2OwogICAgcmV0dXJuIGhlYWQ7Cn0Kdm9pZCBwcmludExpbmtlZExpc3QoTm9kZSogaGVhZCkgewogICAgd2hpbGUgKGhlYWQgIT0gbnVsbHB0cikgewogICAgICAgIHN0ZDo6Y291dCA8PCBoZWFkLT5kYXRhIDw8ICIgIjsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkgewogICAgTm9kZSogaGVhZCA9IG5ldyBOb2RlKDEpOwogICAgaGVhZC0+bmV4dCA9IG5ldyBOb2RlKDIpOwogICAgaGVhZC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlKDMpOwogICAgaGVhZC0+bmV4dC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlKDQpOwogICAgaGVhZC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlKDUpOwogICAgc3RkOjpjb3V0IDw8ICJPcmlnaW5hbCBsaW5rZWQgbGlzdDogIjsKICAgIHByaW50TGlua2VkTGlzdChoZWFkKTsKICAgIGhlYWQgPSByZXZlcnNlTGlua2VkTGlzdChoZWFkKTsKICAgIHN0ZDo6Y291dCA8PCAiUmV2ZXJzZWQgbGlua2VkIGxpc3Q6ICI7CiAgICBwcmludExpbmtlZExpc3QoaGVhZCk7CiAgICB3aGlsZSAoaGVhZCAhPSBudWxscHRyKSB7CiAgICAgICAgTm9kZSogdGVtcCA9IGhlYWQ7CiAgICAgICAgaGVhZCA9IGhlYWQtPm5leHQ7CiAgICAgICAgZGVsZXRlIHRlbXA7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=