#include<iostream>
using namespace std;
class node{
public:
int data;
node* next;
node(int val)
{
data=val;
next=NULL;
}
};
void insertAtHead(node* &head, int val)
{
node* n=new node(val);
n->next=head;
head=n;
}
void insertAtTail(node* &head, int val){
node* n = new node(val);
if(head==NULL){
head=n;
return;
}
node* temp=head;
while(temp->next!=NULL){
temp=temp->next;
}
temp->next=n;
}
bool search(node* head,int val){
node* temp=head;
while (temp!=NULL)
{
if(temp->data==val){
cout<<"true"<<endl;
return true;
}
temp=temp->next;
}
cout<<"false"<<endl;
return false;
}
void deleteAtHead(node* &head){
node* todelete=head;
head=head->next;
delete todelete;
}
void deletion(node* &head,int val){
if(head == NULL){
return;
}
if(head->next == NULL){
deleteAtHead(head);
return;
}
node* temp=head;
while (temp->next->data != val)
{
temp=temp->next;
}
node* todelete=temp->next;
temp->next=temp->next->next;
delete todelete;
}
node* reverse(node* &head){
node* prevptr=NULL;
node* currptr=head;
node* nextptr;
while(currptr!=NULL){
nextptr=currptr->next;
currptr->next=prevptr;
prevptr=currptr;
currptr=nextptr;
}
return prevptr;
}
//reverse linkedlist recursively
node* reverseRecursive(node* &head){
if(head==NULL|| head->next==NULL){
return head;
}
node* newhead= reverseRecursive(head->next);
head->next->next=head;
head->next=NULL;
return newhead;
}
void display(node* head){
node* temp=head;
while(temp!=NULL){
cout<<temp->data<<"->";
temp=temp->next;
}
cout<<"NULL"<<endl;
}
int main(){
node* head=NULL;
insertAtTail(head,1);
insertAtTail(head,2);
insertAtTail(head,3);
display(head);
insertAtHead(head,5);
insertAtHead(head,4);
display(head);
search(head,5);
deletion(head,5);
display(head);
node* newhead= reverseRecursive(head);
display(newhead);
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBub2RlewogICAgcHVibGljOgogICAgaW50IGRhdGE7CiAgICBub2RlKiBuZXh0OwoKICAgIG5vZGUoaW50IHZhbCkKICAgIHsKICAgICAgICBkYXRhPXZhbDsKICAgICAgICBuZXh0PU5VTEw7CiAgICB9Cn07Cgp2b2lkIGluc2VydEF0SGVhZChub2RlKiAmaGVhZCwgaW50IHZhbCkKewogICAgbm9kZSogbj1uZXcgbm9kZSh2YWwpOwogICAgbi0+bmV4dD1oZWFkOwogICAgaGVhZD1uOwp9Cgp2b2lkIGluc2VydEF0VGFpbChub2RlKiAmaGVhZCwgaW50IHZhbCl7CiAgICBub2RlKiBuID0gbmV3IG5vZGUodmFsKTsKCiAgICBpZihoZWFkPT1OVUxMKXsKICAgICAgICBoZWFkPW47CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG5vZGUqIHRlbXA9aGVhZDsKICAgIHdoaWxlKHRlbXAtPm5leHQhPU5VTEwpewogICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgIH0KICAgIHRlbXAtPm5leHQ9bjsKICAgIAp9Cgpib29sIHNlYXJjaChub2RlKiBoZWFkLGludCB2YWwpewogICAgbm9kZSogdGVtcD1oZWFkOwogICAgd2hpbGUgKHRlbXAhPU5VTEwpCiAgICB7CiAgICAgICAgaWYodGVtcC0+ZGF0YT09dmFsKXsKICAgICAgICAgICAgY291dDw8InRydWUiPDxlbmRsOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgdGVtcD10ZW1wLT5uZXh0OwogICAgfQogICAgY291dDw8ImZhbHNlIjw8ZW5kbDsKICAgIHJldHVybiBmYWxzZTsKfQoKdm9pZCBkZWxldGVBdEhlYWQobm9kZSogJmhlYWQpewogICAgbm9kZSogdG9kZWxldGU9aGVhZDsKICAgIGhlYWQ9aGVhZC0+bmV4dDsKCiAgICBkZWxldGUgdG9kZWxldGU7Cn0KCnZvaWQgZGVsZXRpb24obm9kZSogJmhlYWQsaW50IHZhbCl7CiAgICBpZihoZWFkID09IE5VTEwpewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmKGhlYWQtPm5leHQgPT0gTlVMTCl7CiAgICAgICAgZGVsZXRlQXRIZWFkKGhlYWQpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBub2RlKiB0ZW1wPWhlYWQ7CgogICAgd2hpbGUgKHRlbXAtPm5leHQtPmRhdGEgIT0gdmFsKQogICAgewogICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgIH0KCiAgICBub2RlKiB0b2RlbGV0ZT10ZW1wLT5uZXh0OwogICAgdGVtcC0+bmV4dD10ZW1wLT5uZXh0LT5uZXh0OwoKICAgIGRlbGV0ZSB0b2RlbGV0ZTsKICAgIAp9Cgpub2RlKiByZXZlcnNlKG5vZGUqICZoZWFkKXsKICAgIG5vZGUqIHByZXZwdHI9TlVMTDsKICAgIG5vZGUqIGN1cnJwdHI9aGVhZDsKICAgIG5vZGUqIG5leHRwdHI7CgogICAgd2hpbGUoY3VycnB0ciE9TlVMTCl7CiAgICAgICAgbmV4dHB0cj1jdXJycHRyLT5uZXh0OwogICAgICAgIGN1cnJwdHItPm5leHQ9cHJldnB0cjsKCiAgICAgICAgcHJldnB0cj1jdXJycHRyOwogICAgICAgIGN1cnJwdHI9bmV4dHB0cjsKICAgIH0KCiAgICByZXR1cm4gcHJldnB0cjsKfQoKLy9yZXZlcnNlIGxpbmtlZGxpc3QgcmVjdXJzaXZlbHkgCm5vZGUqIHJldmVyc2VSZWN1cnNpdmUobm9kZSogJmhlYWQpewogICAgaWYoaGVhZD09TlVMTHx8IGhlYWQtPm5leHQ9PU5VTEwpewogICAgICAgIHJldHVybiBoZWFkOwogICAgfQoKICAgIG5vZGUqIG5ld2hlYWQ9IHJldmVyc2VSZWN1cnNpdmUoaGVhZC0+bmV4dCk7CiAgICBoZWFkLT5uZXh0LT5uZXh0PWhlYWQ7CiAgICBoZWFkLT5uZXh0PU5VTEw7CiAgICAKICAgIHJldHVybiBuZXdoZWFkOwp9CnZvaWQgZGlzcGxheShub2RlKiBoZWFkKXsKICAgIG5vZGUqIHRlbXA9aGVhZDsKICAgIHdoaWxlKHRlbXAhPU5VTEwpewogICAgICAgIGNvdXQ8PHRlbXAtPmRhdGE8PCItPiI7CiAgICAgICAgdGVtcD10ZW1wLT5uZXh0OwogICAgfQogICAgY291dDw8Ik5VTEwiPDxlbmRsOwp9CgoKaW50IG1haW4oKXsKICAgIG5vZGUqIGhlYWQ9TlVMTDsKCiAgICBpbnNlcnRBdFRhaWwoaGVhZCwxKTsKICAgIGluc2VydEF0VGFpbChoZWFkLDIpOwogICAgaW5zZXJ0QXRUYWlsKGhlYWQsMyk7CiAgICBkaXNwbGF5KGhlYWQpOwogICAgaW5zZXJ0QXRIZWFkKGhlYWQsNSk7CiAgICBpbnNlcnRBdEhlYWQoaGVhZCw0KTsKICAgIGRpc3BsYXkoaGVhZCk7CiAgICBzZWFyY2goaGVhZCw1KTsKICAgIGRlbGV0aW9uKGhlYWQsNSk7CiAgICBkaXNwbGF5KGhlYWQpOwogICAgbm9kZSogbmV3aGVhZD0gcmV2ZXJzZVJlY3Vyc2l2ZShoZWFkKTsKICAgIGRpc3BsYXkobmV3aGVhZCk7CgogICAgcmV0dXJuIDA7Cn0=