#include<bits/stdc++.h>
using namespace std;
class Node{
public:
int data;
Node *next;
Node(int x=0){
this->data = x;
this->next = nullptr;
}
};
class LinkedList{
private:
Node *HEAD;
public:
LinkedList(){
HEAD=nullptr;
}
void insertAtFirstPosition(int x){
Node *newNode = new Node(x);
newNode->next = HEAD;
HEAD = newNode;
}
void insertAtAnyPosition(int key, int k){
if(k<1){
cout << "Invalid Position"<<endl;
return;
}
Node *newNode = new Node(key);
if(k==1){
newNode ->next=HEAD;
HEAD=newNode;
return;
}
int counter = 1;
Node *current;
current = HEAD;
while(current != nullptr && counter <(k-1)){
current = current->next;
counter++;
}
if(current == nullptr){
cout << "Invalid Position"<<endl;
delete newNode;
return;
}
newNode->next=current->next;
current->next=newNode;
return;
}
void print(){
Node *current;
current = HEAD;
while(current!=nullptr ){
cout<<current->data;
cout<<" -> ";
current = current->next;
}
cout<<" NULL"<<endl;
}
};
int main()
{
LinkedList myList;
myList.insertAtFirstPosition(2);
myList.print();
myList.insertAtAnyPosition(3,2);
myList.print();
myList.insertAtAnyPosition(10,3);
myList.print();
myList.insertAtAnyPosition(5,2);
myList.print();
myList.insertAtAnyPosition(15,12);
myList.print();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIE5vZGV7CnB1YmxpYzoKICAgIGludCBkYXRhOwogICAgTm9kZSAqbmV4dDsKICAgIE5vZGUoaW50IHg9MCl7CiAgICAgICAgdGhpcy0+ZGF0YSA9IHg7CiAgICAgICAgdGhpcy0+bmV4dCA9IG51bGxwdHI7CiAgICB9Cn07CmNsYXNzIExpbmtlZExpc3R7CnByaXZhdGU6CiAgICBOb2RlICpIRUFEOwpwdWJsaWM6CiAgICBMaW5rZWRMaXN0KCl7CiAgICAgICAgSEVBRD1udWxscHRyOwogICAgfQogICAgdm9pZCBpbnNlcnRBdEZpcnN0UG9zaXRpb24oaW50IHgpewogICAgICAgIE5vZGUgKm5ld05vZGUgPSBuZXcgTm9kZSh4KTsKICAgICAgICBuZXdOb2RlLT5uZXh0ID0gSEVBRDsKICAgICAgICBIRUFEID0gbmV3Tm9kZTsKICAgIH0KICAgIHZvaWQgaW5zZXJ0QXRBbnlQb3NpdGlvbihpbnQga2V5LCBpbnQgayl7CiAgICAgIGlmKGs8MSl7CiAgICAgICAgY291dCA8PCAiSW52YWxpZCBQb3NpdGlvbiI8PGVuZGw7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIE5vZGUgKm5ld05vZGUgPSBuZXcgTm9kZShrZXkpOwogICAgICBpZihrPT0xKXsKICAgICAgICBuZXdOb2RlIC0+bmV4dD1IRUFEOwogICAgICAgIEhFQUQ9bmV3Tm9kZTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaW50IGNvdW50ZXIgPSAxOwogICAgICBOb2RlICpjdXJyZW50OwogICAgICBjdXJyZW50ID0gSEVBRDsKICAgICAgd2hpbGUoY3VycmVudCAhPSBudWxscHRyICYmIGNvdW50ZXIgPChrLTEpKXsKICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dDsKICAgICAgICBjb3VudGVyKys7CiAgICAgIH0KICAgICAgaWYoY3VycmVudCA9PSBudWxscHRyKXsKICAgICAgICBjb3V0IDw8ICJJbnZhbGlkIFBvc2l0aW9uIjw8ZW5kbDsKICAgICAgICAgIGRlbGV0ZSBuZXdOb2RlOwogICAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIG5ld05vZGUtPm5leHQ9Y3VycmVudC0+bmV4dDsKICAgICAgY3VycmVudC0+bmV4dD1uZXdOb2RlOwogICAgICByZXR1cm47CgogICAgfQogICAgdm9pZCBwcmludCgpewogICAgICAgIE5vZGUgKmN1cnJlbnQ7CiAgICAgICAgY3VycmVudCA9IEhFQUQ7CiAgICAgICAgd2hpbGUoY3VycmVudCE9bnVsbHB0ciApewogICAgICAgICAgICBjb3V0PDxjdXJyZW50LT5kYXRhOwogICAgICAgICAgICBjb3V0PDwiIC0+ICI7CiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgIH0KICAgICAgICBjb3V0PDwiIE5VTEwiPDxlbmRsOwogICAgfQp9OwppbnQgbWFpbigpCnsKICAgIExpbmtlZExpc3QgbXlMaXN0OwogICAgbXlMaXN0Lmluc2VydEF0Rmlyc3RQb3NpdGlvbigyKTsKICAgIG15TGlzdC5wcmludCgpOwogICAgbXlMaXN0Lmluc2VydEF0QW55UG9zaXRpb24oMywyKTsKICAgIG15TGlzdC5wcmludCgpOwogICAgbXlMaXN0Lmluc2VydEF0QW55UG9zaXRpb24oMTAsMyk7CiAgICBteUxpc3QucHJpbnQoKTsKICAgIG15TGlzdC5pbnNlcnRBdEFueVBvc2l0aW9uKDUsMik7CiAgICBteUxpc3QucHJpbnQoKTsKICAgIG15TGlzdC5pbnNlcnRBdEFueVBvc2l0aW9uKDE1LDEyKTsKICAgIG15TGlzdC5wcmludCgpOwogICAgcmV0dXJuIDA7Cn0KCgoK