#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* prev;
Node* next;
Node(int x) {
data = x;
prev = NULL;
next = NULL;
}
};
class DoubleList {
public:
Node* head;
DoubleList() {
head = NULL;
}
void insertFront(int x) {
Node* n = new Node(x);
n->next = head; // connect forward
if (head != NULL)
head->prev = n; // connect backward
head = n; // update head
}
void print() {
Node* t = head;
while (t != NULL) {
cout << t->data << " ";
t = t->next;
}
cout << endl;
}
};
int main() {
DoubleList dl;
dl.insertFront(30);
dl.insertFront(20);
dl.insertFront(10);
dl.print(); // Output: 10 20 30
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTm9kZSB7CnB1YmxpYzoKICAgIGludCBkYXRhOwogICAgTm9kZSogcHJldjsKICAgIE5vZGUqIG5leHQ7CgogICAgTm9kZShpbnQgeCkgewogICAgICAgIGRhdGEgPSB4OwogICAgICAgIHByZXYgPSBOVUxMOwogICAgICAgIG5leHQgPSBOVUxMOwogICAgfQp9OwoKY2xhc3MgRG91YmxlTGlzdCB7CnB1YmxpYzoKICAgIE5vZGUqIGhlYWQ7CgogICAgRG91YmxlTGlzdCgpIHsKICAgICAgICBoZWFkID0gTlVMTDsKICAgIH0KCiAgICB2b2lkIGluc2VydEZyb250KGludCB4KSB7CiAgICAgICAgTm9kZSogbiA9IG5ldyBOb2RlKHgpOwoKICAgICAgICBuLT5uZXh0ID0gaGVhZDsgICAgICAgLy8gY29ubmVjdCBmb3J3YXJkCiAgICAgICAgaWYgKGhlYWQgIT0gTlVMTCkKICAgICAgICAgICAgaGVhZC0+cHJldiA9IG47ICAgLy8gY29ubmVjdCBiYWNrd2FyZAoKICAgICAgICBoZWFkID0gbjsgICAgICAgICAgICAgLy8gdXBkYXRlIGhlYWQKICAgIH0KCiAgICB2b2lkIHByaW50KCkgewogICAgICAgIE5vZGUqIHQgPSBoZWFkOwogICAgICAgIHdoaWxlICh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgY291dCA8PCB0LT5kYXRhIDw8ICIgIjsKICAgICAgICAgICAgdCA9IHQtPm5leHQ7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgRG91YmxlTGlzdCBkbDsKCiAgICBkbC5pbnNlcnRGcm9udCgzMCk7CiAgICBkbC5pbnNlcnRGcm9udCgyMCk7CiAgICBkbC5pbnNlcnRGcm9udCgxMCk7CgogICAgZGwucHJpbnQoKTsgICAvLyBPdXRwdXQ6IDEwIDIwIDMwIAogICAgcmV0dXJuIDA7Cn0K