///Here the create list and print list function has been already implemented. Your task is only to implement
///(i)the find function and then(ii) insert a value(val) after the value(x) use the find function
#include<iostream>
using namespace std;
class Node{
public:
int val;
Node *prev;
Node *next;
};
class doublylinkedlist{
private:
Node *head,*tail;
public:
doublylinkedlist()
{
head=NULL;
tail=NULL;
}
void createFirstElement(int x){
Node *newnode=new Node;
newnode->val=x;
newnode->prev=NULL;
newnode->next=NULL;
head=newnode;
tail=head;
}
void createlist(int x)
{
Node *newnode=new Node;
newnode->val=x;
newnode->next=NULL;
newnode->prev=NULL;
if(head==NULL)
{
createFirstElement(x);
return;
}
else{
tail->next=newnode;
newnode->prev=tail;
tail=newnode;
}
}
///implement a find function which will search for the value(x)
void insertdata(int val,int x){} ///Use the find function and then insert the value(data) after x
void printListfromstart(){
Node *temp=head;
while(temp!=NULL)
{
cout<<temp->val<<" ";
temp=temp->next;
}
}
};
int main()
{
int x,val;
cin>>val>>x;
doublylinkedlist DLL;
DLL.createlist(1);
DLL.createlist(2);
DLL.createlist(3);
DLL.createlist(4);
DLL.createlist(5);
DLL.insertdata(val,x);
DLL.printListfromstart();
}
Ly8vSGVyZSB0aGUgY3JlYXRlIGxpc3QgYW5kIHByaW50IGxpc3QgZnVuY3Rpb24gaGFzIGJlZW4gYWxyZWFkeSBpbXBsZW1lbnRlZC4gWW91ciB0YXNrIGlzIG9ubHkgdG8gaW1wbGVtZW50Ci8vLyhpKXRoZSBmaW5kIGZ1bmN0aW9uIGFuZCB0aGVuKGlpKSBpbnNlcnQgYSB2YWx1ZSh2YWwpIGFmdGVyIHRoZSB2YWx1ZSh4KSB1c2UgdGhlIGZpbmQgZnVuY3Rpb24gCiNpbmNsdWRlPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBOb2RlewpwdWJsaWM6CiAgICBpbnQgdmFsOwogICAgTm9kZSAqcHJldjsKICAgIE5vZGUgKm5leHQ7Cn07CmNsYXNzIGRvdWJseWxpbmtlZGxpc3R7CnByaXZhdGU6CiAgICBOb2RlICpoZWFkLCp0YWlsOwpwdWJsaWM6CiAgICBkb3VibHlsaW5rZWRsaXN0KCkKICAgIHsKICAgICAgICBoZWFkPU5VTEw7CiAgICAgICAgdGFpbD1OVUxMOwogICAgfQogICAgdm9pZCBjcmVhdGVGaXJzdEVsZW1lbnQoaW50IHgpewogICAgICAgIE5vZGUgKm5ld25vZGU9bmV3IE5vZGU7CiAgICAgICAgbmV3bm9kZS0+dmFsPXg7CiAgICAgICAgbmV3bm9kZS0+cHJldj1OVUxMOwogICAgICAgIG5ld25vZGUtPm5leHQ9TlVMTDsKICAgICAgICBoZWFkPW5ld25vZGU7CiAgICAgICAgdGFpbD1oZWFkOwogICAgfQoKICAgIHZvaWQgY3JlYXRlbGlzdChpbnQgeCkKICAgIHsKICAgICAgICBOb2RlICpuZXdub2RlPW5ldyBOb2RlOwogICAgICAgIG5ld25vZGUtPnZhbD14OwogICAgICAgIG5ld25vZGUtPm5leHQ9TlVMTDsKICAgICAgICBuZXdub2RlLT5wcmV2PU5VTEw7CgogICAgICAgIGlmKGhlYWQ9PU5VTEwpCiAgICAgICAgewogICAgICAgICAgICBjcmVhdGVGaXJzdEVsZW1lbnQoeCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgdGFpbC0+bmV4dD1uZXdub2RlOwogICAgICAgICAgICBuZXdub2RlLT5wcmV2PXRhaWw7CiAgICAgICAgICAgIHRhaWw9bmV3bm9kZTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vL2ltcGxlbWVudCBhIGZpbmQgZnVuY3Rpb24gd2hpY2ggd2lsbCBzZWFyY2ggZm9yIHRoZSB2YWx1ZSh4KQogICAgCgoJdm9pZCBpbnNlcnRkYXRhKGludCB2YWwsaW50IHgpe30gLy8vVXNlIHRoZSBmaW5kIGZ1bmN0aW9uIGFuZCB0aGVuIGluc2VydCB0aGUgdmFsdWUoZGF0YSkgYWZ0ZXIgeAogICAgCiAgICB2b2lkIHByaW50TGlzdGZyb21zdGFydCgpewogICAgICAgIE5vZGUgKnRlbXA9aGVhZDsKICAgICAgICB3aGlsZSh0ZW1wIT1OVUxMKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8dGVtcC0+dmFsPDwiICI7CiAgICAgICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgICAgICB9CiAgICB9Cn07CmludCBtYWluKCkKewogICAgaW50IHgsdmFsOwogICAgY2luPj52YWw+Png7CiAgICBkb3VibHlsaW5rZWRsaXN0IERMTDsKICAgIERMTC5jcmVhdGVsaXN0KDEpOwogICAgRExMLmNyZWF0ZWxpc3QoMik7CiAgICBETEwuY3JlYXRlbGlzdCgzKTsKICAgIERMTC5jcmVhdGVsaXN0KDQpOwogICAgRExMLmNyZWF0ZWxpc3QoNSk7CiAgICBETEwuaW5zZXJ0ZGF0YSh2YWwseCk7CiAgICBETEwucHJpbnRMaXN0ZnJvbXN0YXJ0KCk7Cn0K