#include <iostream>
#include <string>
using namespace std;
class node
{
string name;
node*next;
public:
friend class sll;
};
class sll:public node
{
public:
node*head;
node*last;
int*k;
friend class node;
sll()
{
head=nullptr;
last=nullptr;
}
~sll()
{
node*temp2;
node*temp;
temp = head;
while(temp!=nullptr)
{
temp2 = temp->next;
delete(temp);
temp = temp2;
}
}
void diag() {
node*temp = head;
cout << "Head:"<<head<<endl;
cout << "Last:"<<last<<endl;
while(temp!=nullptr)
{
cout << " Name: " <<temp->name <<endl;
cout << " next: " <<temp->next <<endl;
temp = temp->next;
}
}
void input()
{
node*temp;
temp = new node;
cout<<"Enter Name"<<endl;
cin>>temp->name;
if(head==nullptr)
{
head = temp;
last = temp;
}
else
{
last->next = temp;
last = temp;
}
}
sll& operator=(const sll& o)
{
node*temp;
temp = o.head;
while(temp!=nullptr)
{
node *clone = new node(*temp);
if(head==nullptr)
{
head = clone;
last = clone;
}
else
{
last->next = clone;
last = clone;
}
temp = temp->next;
}
return *this;
}
void output()
{
cout<<"Output:"<<endl;
node*temp;
temp = head;
while(temp!=nullptr)
{
cout<<temp->name<<" ";
temp = temp->next;
}
cout <<endl;
}
sll &get()
{
return *this;
}
};
int main()
{
sll obj,obj1;
obj.diag();
obj.input();
obj.input();
obj.diag();
obj1 = obj.get();
obj1.output();
obj1.diag();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3Mgbm9kZQp7CiAgICBzdHJpbmcgbmFtZTsKICAgIG5vZGUqbmV4dDsKICAgIHB1YmxpYzoKICAgIGZyaWVuZCBjbGFzcyBzbGw7Cgp9OwpjbGFzcyBzbGw6cHVibGljIG5vZGUKewogICAgcHVibGljOgogICAgbm9kZSpoZWFkOwogICAgbm9kZSpsYXN0OwogICAgaW50Kms7CiAgICBmcmllbmQgY2xhc3Mgbm9kZTsKICAgIHNsbCgpCiAgICB7CiAgICAgICAgaGVhZD1udWxscHRyOwogICAgICAgIGxhc3Q9bnVsbHB0cjsKICAgIH0KICAgIH5zbGwoKQogICAgewogICAgICAgIG5vZGUqdGVtcDI7CiAgICAgICAgbm9kZSp0ZW1wOwogICAgICAgIHRlbXAgPSBoZWFkOwogICAgICAgIHdoaWxlKHRlbXAhPW51bGxwdHIpCiAgICAgICAgewogICAgICAgICAgICB0ZW1wMiA9IHRlbXAtPm5leHQ7CiAgICAgICAgICAgIGRlbGV0ZSh0ZW1wKTsKICAgICAgICAgICAgdGVtcCA9IHRlbXAyOwogICAgICAgIH0KICAgIH0KICAgIHZvaWQgZGlhZygpIHsKICAgICAgICBub2RlKnRlbXAgPSBoZWFkOwogICAgICAgIGNvdXQgPDwgIkhlYWQ6Ijw8aGVhZDw8ZW5kbDsKICAgICAgICBjb3V0IDw8ICJMYXN0OiI8PGxhc3Q8PGVuZGw7CiAgICAgICAgd2hpbGUodGVtcCE9bnVsbHB0cikKICAgICAgICB7CiAgICAgICAgCWNvdXQgPDwgIiAgTmFtZTogICIgPDx0ZW1wLT5uYW1lIDw8ZW5kbDsgCiAgICAgICAgCWNvdXQgPDwgIiAgbmV4dDogICIgPDx0ZW1wLT5uZXh0IDw8ZW5kbDsgCiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgIH0KICAgIH0KICAgIHZvaWQgaW5wdXQoKQogICAgewoKICAgICAgICBub2RlKnRlbXA7CiAgICAgICAgdGVtcCA9IG5ldyBub2RlOwogICAgICAgIGNvdXQ8PCJFbnRlciBOYW1lIjw8ZW5kbDsKICAgICAgICBjaW4+PnRlbXAtPm5hbWU7CiAgICAgICAgaWYoaGVhZD09bnVsbHB0cikKICAgICAgICB7CiAgICAgICAgICAgIGhlYWQgPSB0ZW1wOwogICAgICAgICAgICBsYXN0ID0gdGVtcDsKICAgICAgICB9CiAgICAgICAgZWxzZSAKICAgICAgICB7CiAgICAgICAgICAgIGxhc3QtPm5leHQgPSB0ZW1wOwogICAgICAgICAgICBsYXN0ID0gdGVtcDsKICAgICAgICB9CgogICAgfQogICAgc2xsJiBvcGVyYXRvcj0oY29uc3Qgc2xsJiBvKQogICAgewogICAgICAgIG5vZGUqdGVtcDsKICAgICAgICB0ZW1wID0gby5oZWFkOwogICAgICAgIHdoaWxlKHRlbXAhPW51bGxwdHIpCiAgICAgICAgewogICAgICAgIAlub2RlICpjbG9uZSA9IG5ldyBub2RlKCp0ZW1wKTsgCiAgICAgICAgCWlmKGhlYWQ9PW51bGxwdHIpCiAgICAgICAgewogICAgICAgICAgICBoZWFkID0gY2xvbmU7CiAgICAgICAgICAgIGxhc3QgPSBjbG9uZTsKICAgICAgICB9CiAgICAgICAgZWxzZSAKICAgICAgICB7CiAgICAgICAgICAgIGxhc3QtPm5leHQgPSBjbG9uZTsKICAgICAgICAgICAgbGFzdCA9IGNsb25lOwogICAgICAgIH0KCiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gKnRoaXM7IAogICAgfQogICB2b2lkIG91dHB1dCgpCiAgICB7CiAgICAgICAgY291dDw8Ik91dHB1dDoiPDxlbmRsOwogICAgICAgIG5vZGUqdGVtcDsKICAgICAgICB0ZW1wID0gaGVhZDsKICAgICAgICB3aGlsZSh0ZW1wIT1udWxscHRyKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8dGVtcC0+bmFtZTw8IiAiOwogICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgICAgICB9CiAgICAgICAgY291dCA8PGVuZGw7IAogICAgfQogICAgc2xsICZnZXQoKQogICAgewogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfTsKaW50IG1haW4oKQp7CiAgICBzbGwgb2JqLG9iajE7CiAgICBvYmouZGlhZygpOwogICAgb2JqLmlucHV0KCk7CiAgICBvYmouaW5wdXQoKTsgCiAgICBvYmouZGlhZygpOwogICAgb2JqMSA9IG9iai5nZXQoKTsKICAgIG9iajEub3V0cHV0KCk7CiAgICBvYmoxLmRpYWcoKTsgCiAgICByZXR1cm4gMDsKfQ==