#include <iostream>
using namespace std;
struct node
{
int data;
node *next = nullptr;
};
node *list = nullptr;
void insertFront()
{
int value;
//cout << "ENTER A VALUE=";
cin >> value;
list = new node{value, list};
}
void display()
{
for(node *p = list; p != nullptr; p = p->next)
{
cout << p->data << " ";
}
cout << endl;
}
void insertSpec()
{
int number, value;
//cout << "Enter the node number after which you want to enter a new node=";
cin >> number;
if (number < 1)
{
cout << "INVALID NODE NUMBER!" << endl;
return;
}
node **p = &list;
int n = number;
while (*p != nullptr && n > 0)
{
p = &((*p)->next);
--n;
}
if (n > 0)
{
cout << "YOU CANNOT PUT A NODE AFTER " << number << endl;
return;
}
//cout << "ENTER THE VALUE YOU WANT TO ADD=";
cin >> value;
*p = new node{value, *p};
}
int main()
{
int choice;
/*
cout << "1) Insert at front" << endl;
cout << "5) Insert at specified place" << endl;
cout << "9) Display" << endl;
cout << "99) Exit" << endl << endl;
*/
do
{
//cout << "Your choice:";
cin >> choice;
switch (choice)
{
case 1:
insertFront();
break;
case 5:
insertSpec();
break;
case 9:
display();
break;
}
}
while (choice != 99);
cout << "PROGRAM TERMINATED :)";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGUKewogICAgaW50IGRhdGE7CiAgICBub2RlICpuZXh0ID0gbnVsbHB0cjsKfTsKCm5vZGUgKmxpc3QgPSBudWxscHRyOwoKdm9pZCBpbnNlcnRGcm9udCgpCnsKICAgIGludCB2YWx1ZTsKCiAgICAvL2NvdXQgPDwgIkVOVEVSIEEgVkFMVUU9IjsKICAgIGNpbiA+PiB2YWx1ZTsKCiAgICBsaXN0ID0gbmV3IG5vZGV7dmFsdWUsIGxpc3R9Owp9Cgp2b2lkIGRpc3BsYXkoKQp7CiAgICBmb3Iobm9kZSAqcCA9IGxpc3Q7IHAgIT0gbnVsbHB0cjsgcCA9IHAtPm5leHQpCiAgICB7CiAgICAgICAgY291dCA8PCBwLT5kYXRhIDw8ICIgIjsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKfQoKdm9pZCBpbnNlcnRTcGVjKCkKewogICAgaW50IG51bWJlciwgdmFsdWU7CgogICAgLy9jb3V0IDw8ICJFbnRlciB0aGUgbm9kZSBudW1iZXIgYWZ0ZXIgd2hpY2ggeW91IHdhbnQgdG8gZW50ZXIgYSBuZXcgbm9kZT0iOwogICAgY2luID4+IG51bWJlcjsKCiAgICBpZiAobnVtYmVyIDwgMSkKICAgIHsKICAgICAgICBjb3V0IDw8ICJJTlZBTElEIE5PREUgTlVNQkVSISIgPDwgZW5kbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbm9kZSAqKnAgPSAmbGlzdDsKICAgIGludCBuID0gbnVtYmVyOwoKICAgIHdoaWxlICgqcCAhPSBudWxscHRyICYmIG4gPiAwKQogICAgewogICAgICAgIHAgPSAmKCgqcCktPm5leHQpOwogICAgICAgIC0tbjsKICAgIH0KCiAgICBpZiAobiA+IDApCiAgICB7CiAgICAgICAgY291dCA8PCAiWU9VIENBTk5PVCBQVVQgQSBOT0RFIEFGVEVSICIgPDwgbnVtYmVyIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vY291dCA8PCAiRU5URVIgVEhFIFZBTFVFIFlPVSBXQU5UIFRPIEFERD0iOwogICAgY2luID4+IHZhbHVlOwoKICAgICpwID0gbmV3IG5vZGV7dmFsdWUsICpwfTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgY2hvaWNlOwoKICAgIC8qCiAgICBjb3V0IDw8ICIxKSBJbnNlcnQgYXQgZnJvbnQiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICI1KSBJbnNlcnQgYXQgc3BlY2lmaWVkIHBsYWNlIiA8PCBlbmRsOwogICAgY291dCA8PCAiOSkgRGlzcGxheSIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIjk5KSBFeGl0IiA8PCBlbmRsIDw8IGVuZGw7CgkqLwoKICAgIGRvCiAgICB7CiAgICAgICAgLy9jb3V0IDw8ICJZb3VyIGNob2ljZToiOwogICAgICAgIGNpbiA+PiBjaG9pY2U7CgogICAgICAgIHN3aXRjaCAoY2hvaWNlKQogICAgICAgIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGluc2VydEZyb250KCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIGluc2VydFNwZWMoKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgOToKICAgICAgICAgICAgZGlzcGxheSgpOwogICAgICAgICAgICBicmVhazsKCQl9Cgl9CiAgICB3aGlsZSAoY2hvaWNlICE9IDk5KTsKCiAgICBjb3V0IDw8ICJQUk9HUkFNIFRFUk1JTkFURUQgOikiOwoKICAgIHJldHVybiAwOwp9