#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
}*head,*var,*trav;
void insert_at_begning(int value)
{
var
=(struct node
*)malloc(sizeof (struct node
)); var->data=value;
if(head==NULL)
{
head=var;
head->next=NULL;
}
else
{
var->next=head;
head=var;
}
}
void insert_at_end(int value)
{
struct node *temp;
temp=head;
var
=(struct node
*)malloc(sizeof (struct node
)); var->data=value;
if(head==NULL)
{
head=var;
head->next=NULL;
}
else
{
while(temp->next!=NULL)
{
temp=temp->next;
}
var->next=NULL;
temp->next=var;
}
}
void insert_at_middle(int value, int loc)
{
struct node *var2,*temp;
var
=(struct node
*)malloc(sizeof (struct node
)); var->data=value;
temp=head;
if(head==NULL)
{
head=var;
head->next=NULL;
}
else
{
while(temp->data!=loc)
{
temp=temp->next;
}
var2=temp->next;
temp->next=var;
var->next=var2;
}
}
int delete_from_middle(int value)
{
struct node *temp,*var;
temp=head;
while(temp!=NULL)
{
if(temp->data == value)
{
if(temp==head)
{
head=temp->next;
return 0;
}
else
{
var->next=temp->next;
return 0;
}
}
else
{
var=temp;
temp=temp->next;
}
}
printf("data deleted from list is %d",value
); }
int delete_from_end()
{
struct node *temp;
temp=head;
while(temp->next != NULL)
{
var=temp;
temp=temp->next;
}
if(temp ==head)
{
head=temp->next;
return 0;
}
printf("data deleted from list is %d",temp
->data
); var->next=NULL;
return 0;
}
void display()
{
trav=head;
if(trav==NULL)
{
}
else
{
printf("\nElements in the List: "); while(trav!=NULL)
{
trav=trav->next;
break;
}
}
}
int main()
{
int i=0;
head=NULL;
while(1)
{
printf("\nenter the choice of operation to perform on linked list"); switch(i)
{
case 1:
{
int value;
printf("\nenter the value to be inserted"); insert_at_begning(value);
display();
break;
}
case 2:
{
int value;
printf("\nenter value to be inserted"); insert_at_end(value);
display();
break;
}
case 3:
{
int value,loc;
printf("\nafter which data you want to insert the data"); printf("\nenter the value to be inserted"); insert_at_middle(value,loc);
display();
break;
}
case 4:
{
delete_from_end();
display();
break;
}
case 5:
{
int value;
display();
printf("\nenter the data that you want to delete from the list shown above"); delete_from_middle(value);
display();
break;
}
case 6:
{
}
}
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3Qgbm9kZQp7CiAgICBpbnQgZGF0YTsKICAgIHN0cnVjdCBub2RlICpuZXh0Owp9KmhlYWQsKnZhciwqdHJhdjsKCnZvaWQgaW5zZXJ0X2F0X2JlZ25pbmcoaW50IHZhbHVlKQp7CiAgICAgdmFyPShzdHJ1Y3Qgbm9kZSAqKW1hbGxvYyhzaXplb2YgKHN0cnVjdCBub2RlKSk7CiAgICAgdmFyLT5kYXRhPXZhbHVlOwogICAgIGlmKGhlYWQ9PU5VTEwpCiAgICAgewogICAgICAgICBoZWFkPXZhcjsKICAgICAgICAgaGVhZC0+bmV4dD1OVUxMOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICB2YXItPm5leHQ9aGVhZDsKICAgICAgICAgaGVhZD12YXI7CiAgICAgfQp9Cgp2b2lkIGluc2VydF9hdF9lbmQoaW50IHZhbHVlKQp7CiAgICAgIHN0cnVjdCBub2RlICp0ZW1wOyAKICAgICAgdGVtcD1oZWFkOwogICAgICB2YXI9KHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZiAoc3RydWN0IG5vZGUpKTsKICAgICAgdmFyLT5kYXRhPXZhbHVlOwogICAgICBpZihoZWFkPT1OVUxMKQogICAgICB7CiAgICAgICAgICBoZWFkPXZhcjsKICAgICAgICAgIGhlYWQtPm5leHQ9TlVMTDsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAgIHdoaWxlKHRlbXAtPm5leHQhPU5VTEwpCiAgICAgICAgICB7ICAgICAKICAgICAgICAgICAgICAgdGVtcD10ZW1wLT5uZXh0OwogICAgICAgICAgfQogICAgICAgICAgdmFyLT5uZXh0PU5VTEw7CiAgICAgICAgICB0ZW1wLT5uZXh0PXZhcjsKICAgICAgfQp9Cgp2b2lkIGluc2VydF9hdF9taWRkbGUoaW50IHZhbHVlLCBpbnQgbG9jKQp7CiAgICAgc3RydWN0IG5vZGUgKnZhcjIsKnRlbXA7CiAgICAgdmFyPShzdHJ1Y3Qgbm9kZSAqKW1hbGxvYyhzaXplb2YgKHN0cnVjdCBub2RlKSk7CiAgICAgdmFyLT5kYXRhPXZhbHVlOwogICAgIHRlbXA9aGVhZDsKCiAgICAgaWYoaGVhZD09TlVMTCkKICAgICB7CiAgICAgICAgICBoZWFkPXZhcjsKICAgICAgICAgIGhlYWQtPm5leHQ9TlVMTDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgIHdoaWxlKHRlbXAtPmRhdGEhPWxvYykKICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgICAgICAgIH0KICAgICAgICAgIHZhcjI9dGVtcC0+bmV4dDsKICAgICAgICAgIHRlbXAtPm5leHQ9dmFyOwogICAgICAgICAgdmFyLT5uZXh0PXZhcjI7CiAgICAgfQp9CgppbnQgZGVsZXRlX2Zyb21fbWlkZGxlKGludCB2YWx1ZSkKewogICAgIHN0cnVjdCBub2RlICp0ZW1wLCp2YXI7CiAgICAgdGVtcD1oZWFkOwogICAgIHdoaWxlKHRlbXAhPU5VTEwpCiAgICAgewogICAgICAgICAgaWYodGVtcC0+ZGF0YSA9PSB2YWx1ZSkKICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKHRlbXA9PWhlYWQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGhlYWQ9dGVtcC0+bmV4dDsKICAgICAgICAgICAgICAgICAgICAgZnJlZSh0ZW1wKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHZhci0+bmV4dD10ZW1wLT5uZXh0OwogICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXApOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgICAgdmFyPXRlbXA7CiAgICAgICAgICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgICAgICAgIH0KICAgICB9CnByaW50ZigiZGF0YSBkZWxldGVkIGZyb20gbGlzdCBpcyAlZCIsdmFsdWUpOwp9CgppbnQgZGVsZXRlX2Zyb21fZW5kKCkKewogICAgIHN0cnVjdCBub2RlICp0ZW1wOwogICAgIHRlbXA9aGVhZDsKICAgICB3aGlsZSh0ZW1wLT5uZXh0ICE9IE5VTEwpCiAgICAgewogICAgICAgICAgdmFyPXRlbXA7CiAgICAgICAgICB0ZW1wPXRlbXAtPm5leHQ7CiAgICAgfQogICAgIGlmKHRlbXAgPT1oZWFkKQogICAgIHsKICAgICAgICAgIGhlYWQ9dGVtcC0+bmV4dDsgCiAgICAgICAgICBmcmVlKHRlbXApOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHByaW50ZigiZGF0YSBkZWxldGVkIGZyb20gbGlzdCBpcyAlZCIsdGVtcC0+ZGF0YSk7CiAgICAgdmFyLT5uZXh0PU5VTEw7CiAgICAgZnJlZSh0ZW1wKTsKICAgICByZXR1cm4gMDsKfQoKdm9pZCBkaXNwbGF5KCkKewogICAgIHRyYXY9aGVhZDsKICAgICBpZih0cmF2PT1OVUxMKQogICAgIHsKICAgICAgICAgIHByaW50ZigiXG5MaXN0IGlzIEVtcHR5Iik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgICBwcmludGYoIlxuRWxlbWVudHMgaW4gdGhlIExpc3Q6ICIpOwogICAgICAgICAgd2hpbGUodHJhdiE9TlVMTCkKICAgICAgICAgIHsKICAgICAgICAgICAgICAgcHJpbnRmKCIgLT4gJWQgIix0cmF2LT5kYXRhKTsKICAgICAgICAgICAgICAgdHJhdj10cmF2LT5uZXh0OwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAKICAgICAgfQogICAgICAKfQoKaW50IG1haW4oKQp7CiAgICAgaW50IGk9MDsKICAgICBoZWFkPU5VTEw7CiAgIAogICAgIHdoaWxlKDEpCiAgICAgewogICAgICAgICAgIHByaW50ZigiXG5lbnRlciB0aGUgY2hvaWNlIG9mIG9wZXJhdGlvbiB0byBwZXJmb3JtIG9uIGxpbmtlZCBsaXN0Iik7CiAgICAgICAgICAgc2NhbmYoIiVkIiwmaSk7CiAgICAgICAgICAgc3dpdGNoKGkpCiAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGludCB2YWx1ZTsKICAgICAgICAgICAgICAgICBwcmludGYoIlxuZW50ZXIgdGhlIHZhbHVlIHRvIGJlIGluc2VydGVkIik7CiAgICAgICAgICAgICAgICAgc2NhbmYoIiVkIiwmdmFsdWUpOwogICAgICAgICAgICAgICAgIGluc2VydF9hdF9iZWduaW5nKHZhbHVlKTsKICAgICAgICAgICAgICAgICBkaXNwbGF5KCk7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHsgIAogICAgICAgICAgICAgICAgaW50IHZhbHVlOwogICAgICAgICAgICAgICAgcHJpbnRmKCJcbmVudGVyIHZhbHVlIHRvIGJlIGluc2VydGVkIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCZ2YWx1ZSk7CiAgICAgICAgICAgICAgICBpbnNlcnRfYXRfZW5kKHZhbHVlKTsKICAgICAgICAgICAgICAgIGRpc3BsYXkoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IHZhbHVlLGxvYzsKICAgICAgICAgICAgICAgIHByaW50ZigiXG5hZnRlciB3aGljaCBkYXRhIHlvdSB3YW50IHRvIGluc2VydCB0aGUgZGF0YSIpOwogICAgICAgICAgICAgICAgc2NhbmYoIiVkIiwmbG9jKTsKICAgICAgICAgICAgICAgIHByaW50ZigiXG5lbnRlciB0aGUgdmFsdWUgdG8gYmUgaW5zZXJ0ZWQiKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlZCIsJnZhbHVlKTsKICAgICAgICAgICAgICAgIGluc2VydF9hdF9taWRkbGUodmFsdWUsbG9jKTsKICAgICAgICAgICAgICAgIGRpc3BsYXkoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGVsZXRlX2Zyb21fZW5kKCk7CiAgICAgICAgICAgICAgICBkaXNwbGF5KCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB2YWx1ZTsKICAgICAgICAgICAgICAgIGRpc3BsYXkoKTsKICAgICAgICAgICAgICAgIHByaW50ZigiXG5lbnRlciB0aGUgZGF0YSB0aGF0IHlvdSB3YW50IHRvIGRlbGV0ZSBmcm9tIHRoZSBsaXN0IHNob3duIGFib3ZlIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCZ2YWx1ZSk7CiAgICAgICAgICAgICAgICBkZWxldGVfZnJvbV9taWRkbGUodmFsdWUpOwogICAgICAgICAgICAgICAgZGlzcGxheSgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBleGl0KDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgfQpyZXR1cm4gMDsKfQ==