#include <iostream>
using namespace std;
struct DoublyLinkedListNode {
int data;
DoublyLinkedListNode* next;
DoublyLinkedListNode* prev;
DoublyLinkedListNode(int val) {
data = val;
next = nullptr;
prev = nullptr;
}
};
DoublyLinkedListNode* reverse(DoublyLinkedListNode* head) {
DoublyLinkedListNode* current = head;
DoublyLinkedListNode* newHead = nullptr;
while (current) {
swap(current->next, current->prev);
newHead = current;
current = current->prev;
}
return newHead;
}
void printList(DoublyLinkedListNode* head) {
while (head) {
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
int main() {
DoublyLinkedListNode* head = new DoublyLinkedListNode(10);
head->next = new DoublyLinkedListNode(20);
head->next->prev = head;
head->next->next = new DoublyLinkedListNode(30);
head->next->next->prev = head->next;
head = reverse(head);
printList(head);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IERvdWJseUxpbmtlZExpc3ROb2RlIHsKICAgIGludCBkYXRhOwogICAgRG91Ymx5TGlua2VkTGlzdE5vZGUqIG5leHQ7CiAgICBEb3VibHlMaW5rZWRMaXN0Tm9kZSogcHJldjsKCiAgICBEb3VibHlMaW5rZWRMaXN0Tm9kZShpbnQgdmFsKSB7CiAgICAgICAgZGF0YSA9IHZhbDsKICAgICAgICBuZXh0ID0gbnVsbHB0cjsKICAgICAgICBwcmV2ID0gbnVsbHB0cjsKICAgIH0KfTsKCkRvdWJseUxpbmtlZExpc3ROb2RlKiByZXZlcnNlKERvdWJseUxpbmtlZExpc3ROb2RlKiBoZWFkKSB7CiAgICBEb3VibHlMaW5rZWRMaXN0Tm9kZSogY3VycmVudCA9IGhlYWQ7CiAgICBEb3VibHlMaW5rZWRMaXN0Tm9kZSogbmV3SGVhZCA9IG51bGxwdHI7CgogICAgd2hpbGUgKGN1cnJlbnQpIHsKICAgICAgICBzd2FwKGN1cnJlbnQtPm5leHQsIGN1cnJlbnQtPnByZXYpOwogICAgICAgIG5ld0hlYWQgPSBjdXJyZW50OwogICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wcmV2OwogICAgfQoKICAgIHJldHVybiBuZXdIZWFkOwp9Cgp2b2lkIHByaW50TGlzdChEb3VibHlMaW5rZWRMaXN0Tm9kZSogaGVhZCkgewogICAgd2hpbGUgKGhlYWQpIHsKICAgICAgICBjb3V0IDw8IGhlYWQtPmRhdGEgPDwgIiAiOwogICAgICAgIGhlYWQgPSBoZWFkLT5uZXh0OwogICAgfQogICAgY291dCA8PCBlbmRsOwp9CgppbnQgbWFpbigpIHsKICAgIERvdWJseUxpbmtlZExpc3ROb2RlKiBoZWFkID0gbmV3IERvdWJseUxpbmtlZExpc3ROb2RlKDEwKTsKICAgIGhlYWQtPm5leHQgPSBuZXcgRG91Ymx5TGlua2VkTGlzdE5vZGUoMjApOwogICAgaGVhZC0+bmV4dC0+cHJldiA9IGhlYWQ7CiAgICBoZWFkLT5uZXh0LT5uZXh0ID0gbmV3IERvdWJseUxpbmtlZExpc3ROb2RlKDMwKTsKICAgIGhlYWQtPm5leHQtPm5leHQtPnByZXYgPSBoZWFkLT5uZXh0OwoKICAgIGhlYWQgPSByZXZlcnNlKGhlYWQpOwogICAgcHJpbnRMaXN0KGhlYWQpOwoKICAgIHJldHVybiAwOwp9Cg==