#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node* prev;
Node* next;
};
int main() {
Node* head = new Node{10, NULL, NULL};
head->next = new Node{20, head, NULL};
head->next->next = new Node{30, head->next, NULL};
head->next->next->next = new Node{40, head->next->next, NULL};
int pos = 0;
int value = 25;
if(pos == 0) {
Node* newNode = new Node{value, NULL, head};
head->prev = newNode;
head = newNode;
}
else {
Node* temp = head;
int i = 0;
while(i < pos-1 && temp->next != NULL) {
temp = temp->next;
i++;
}
Node* newNode = new Node{value, temp, temp->next};
if(temp->next != NULL) {
temp->next->prev = newNode;
}
temp->next = newNode;
}
Node* t = head;
while(t != NULL) {
cout << t->data << " ";
t = t->next;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgTm9kZSogcHJldjsKICAgIE5vZGUqIG5leHQ7Cn07CmludCBtYWluKCkgewogICAgTm9kZSogaGVhZCA9IG5ldyBOb2RlezEwLCBOVUxMLCBOVUxMfTsKICAgIGhlYWQtPm5leHQgPSBuZXcgTm9kZXsyMCwgaGVhZCwgTlVMTH07CiAgICBoZWFkLT5uZXh0LT5uZXh0ID0gbmV3IE5vZGV7MzAsIGhlYWQtPm5leHQsIE5VTEx9OwogICAgaGVhZC0+bmV4dC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlezQwLCBoZWFkLT5uZXh0LT5uZXh0LCBOVUxMfTsKCiAgICBpbnQgcG9zID0gMDsgIAogICAgaW50IHZhbHVlID0gMjU7CiAgICBpZihwb3MgPT0gMCkgewogICAgICAgIE5vZGUqIG5ld05vZGUgPSBuZXcgTm9kZXt2YWx1ZSwgTlVMTCwgaGVhZH07CiAgICAgICAgaGVhZC0+cHJldiA9IG5ld05vZGU7CiAgICAgICAgaGVhZCA9IG5ld05vZGU7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBOb2RlKiB0ZW1wID0gaGVhZDsKICAgICAgICBpbnQgaSA9IDA7CiAgICAgICAgd2hpbGUoaSA8IHBvcy0xICYmIHRlbXAtPm5leHQgIT0gTlVMTCkgewogICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICBOb2RlKiBuZXdOb2RlID0gbmV3IE5vZGV7dmFsdWUsIHRlbXAsIHRlbXAtPm5leHR9OwogICAgICAgIGlmKHRlbXAtPm5leHQgIT0gTlVMTCkgewogICAgICAgICAgICB0ZW1wLT5uZXh0LT5wcmV2ID0gbmV3Tm9kZTsKICAgICAgICB9CiAgICAgICAgdGVtcC0+bmV4dCA9IG5ld05vZGU7CiAgICB9CiAgICBOb2RlKiB0ID0gaGVhZDsKICAgIHdoaWxlKHQgIT0gTlVMTCkgewogICAgICAgIGNvdXQgPDwgdC0+ZGF0YSA8PCAiICI7CiAgICAgICAgdCA9IHQtPm5leHQ7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K