#include <iostream>
using namespace std;
struct SinglyLinkedListNode {
int data;
SinglyLinkedListNode* next;
SinglyLinkedListNode(int node_data) {
data = node_data;
next = nullptr;
}
};
SinglyLinkedListNode* insertNodeAtPosition(SinglyLinkedListNode* head, int data, int position) {
SinglyLinkedListNode* newNode = new SinglyLinkedListNode(data);
if (position == 0) {
newNode->next = head;
return newNode;
}
SinglyLinkedListNode* current = head;
for (int i = 0; i < position - 1 && current; i++) {
current = current->next;
}
if (current) {
newNode->next = current->next;
current->next = newNode;
}
return head;
}
void printList(SinglyLinkedListNode* head) {
while (head) {
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
int main() {
SinglyLinkedListNode* head = nullptr;
head = insertNodeAtPosition(head, 10, 0);
head = insertNodeAtPosition(head, 20, 1);
head = insertNodeAtPosition(head, 30, 2);
head = insertNodeAtPosition(head, 25, 2);
printList(head);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFNpbmdseUxpbmtlZExpc3ROb2RlIHsKICAgIGludCBkYXRhOwogICAgU2luZ2x5TGlua2VkTGlzdE5vZGUqIG5leHQ7CgogICAgU2luZ2x5TGlua2VkTGlzdE5vZGUoaW50IG5vZGVfZGF0YSkgewogICAgICAgIGRhdGEgPSBub2RlX2RhdGE7CiAgICAgICAgbmV4dCA9IG51bGxwdHI7CiAgICB9Cn07CgpTaW5nbHlMaW5rZWRMaXN0Tm9kZSogaW5zZXJ0Tm9kZUF0UG9zaXRpb24oU2luZ2x5TGlua2VkTGlzdE5vZGUqIGhlYWQsIGludCBkYXRhLCBpbnQgcG9zaXRpb24pIHsKICAgIFNpbmdseUxpbmtlZExpc3ROb2RlKiBuZXdOb2RlID0gbmV3IFNpbmdseUxpbmtlZExpc3ROb2RlKGRhdGEpOwoKICAgIGlmIChwb3NpdGlvbiA9PSAwKSB7CiAgICAgICAgbmV3Tm9kZS0+bmV4dCA9IGhlYWQ7CiAgICAgICAgcmV0dXJuIG5ld05vZGU7CiAgICB9CgogICAgU2luZ2x5TGlua2VkTGlzdE5vZGUqIGN1cnJlbnQgPSBoZWFkOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwb3NpdGlvbiAtIDEgJiYgY3VycmVudDsgaSsrKSB7CiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICB9CgogICAgaWYgKGN1cnJlbnQpIHsKICAgICAgICBuZXdOb2RlLT5uZXh0ID0gY3VycmVudC0+bmV4dDsKICAgICAgICBjdXJyZW50LT5uZXh0ID0gbmV3Tm9kZTsKICAgIH0KCiAgICByZXR1cm4gaGVhZDsKfQoKdm9pZCBwcmludExpc3QoU2luZ2x5TGlua2VkTGlzdE5vZGUqIGhlYWQpIHsKICAgIHdoaWxlIChoZWFkKSB7CiAgICAgICAgY291dCA8PCBoZWFkLT5kYXRhIDw8ICIgIjsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgICBTaW5nbHlMaW5rZWRMaXN0Tm9kZSogaGVhZCA9IG51bGxwdHI7CgogICAgaGVhZCA9IGluc2VydE5vZGVBdFBvc2l0aW9uKGhlYWQsIDEwLCAwKTsgCiAgICBoZWFkID0gaW5zZXJ0Tm9kZUF0UG9zaXRpb24oaGVhZCwgMjAsIDEpOwogICAgaGVhZCA9IGluc2VydE5vZGVBdFBvc2l0aW9uKGhlYWQsIDMwLCAyKTsKICAgIGhlYWQgPSBpbnNlcnROb2RlQXRQb3NpdGlvbihoZWFkLCAyNSwgMik7CgogICAgcHJpbnRMaXN0KGhlYWQpOyAKCiAgICByZXR1cm4gMDsKfQo=