#include <iostream>
using namespace std;
struct node{
int data;
struct node* next;
};
struct node* createnode(int val)
{
struct node* p=(struct node*)malloc(sizeof(struct node));
p->data=val;
p->next=NULL;
return p;
}
struct node* insertsorted(struct node* head,int val)
{
struct node* temp1=NULL;
struct node* temp=head;
if(val<head->data)
{
temp1=createnode(val);
temp1->next=head;
head=temp1;
return head;
}
while(temp->next!=NULL && temp->next->data<val)
{
temp=temp->next;
}
temp1=createnode(val);
temp1->next=temp->next;
temp->next=temp1;
return head;
}
struct node* deletesorted(struct node* head,int pos)
{
struct node* temp=head;
struct node* temp1=NULL;
if(pos==1)
{
head=head->next;
free(temp);
return head;
}
while(pos>2 && temp->next!=NULL)
{
temp=temp->next;
pos--;
}
temp1=temp->next;
temp->next=temp->next->next;
free(temp1);
return head;
}
void printlinked(struct node* head)
{
while(head!=NULL)
{
cout<<head->data<<" ";
head=head->next;
}
}
int main() {
struct node* head=createnode(1);
head->next=createnode(3);
head->next->next=createnode(5);
head->next->next->next=createnode(6);
struct node* result=insertsorted(head,1);
printlinked(result);
cout<<"\n";
struct node* result1=deletesorted(head,5);
printlinked(result1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgbm9kZXsKCSAgICAgICBpbnQgZGF0YTsKCSAgICAgICBzdHJ1Y3Qgbm9kZSogbmV4dDsKfTsKc3RydWN0IG5vZGUqIGNyZWF0ZW5vZGUoaW50IHZhbCkKewoJc3RydWN0IG5vZGUqIHA9KHN0cnVjdCBub2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CglwLT5kYXRhPXZhbDsKCXAtPm5leHQ9TlVMTDsKCXJldHVybiBwOwp9CnN0cnVjdCBub2RlKiBpbnNlcnRzb3J0ZWQoc3RydWN0IG5vZGUqIGhlYWQsaW50IHZhbCkKewoJc3RydWN0IG5vZGUqIHRlbXAxPU5VTEw7CglzdHJ1Y3Qgbm9kZSogdGVtcD1oZWFkOwoJaWYodmFsPGhlYWQtPmRhdGEpCgl7CgkJdGVtcDE9Y3JlYXRlbm9kZSh2YWwpOwoJCXRlbXAxLT5uZXh0PWhlYWQ7CgkJaGVhZD10ZW1wMTsKCQlyZXR1cm4gaGVhZDsKCX0KCXdoaWxlKHRlbXAtPm5leHQhPU5VTEwgJiYgdGVtcC0+bmV4dC0+ZGF0YTx2YWwpCgl7CgkJdGVtcD10ZW1wLT5uZXh0OwoJfQoJdGVtcDE9Y3JlYXRlbm9kZSh2YWwpOwoJdGVtcDEtPm5leHQ9dGVtcC0+bmV4dDsKCXRlbXAtPm5leHQ9dGVtcDE7CglyZXR1cm4gaGVhZDsKfQpzdHJ1Y3Qgbm9kZSogZGVsZXRlc29ydGVkKHN0cnVjdCBub2RlKiBoZWFkLGludCBwb3MpCnsKCXN0cnVjdCBub2RlKiB0ZW1wPWhlYWQ7CglzdHJ1Y3Qgbm9kZSogdGVtcDE9TlVMTDsKCWlmKHBvcz09MSkKCXsKCQloZWFkPWhlYWQtPm5leHQ7CgkJZnJlZSh0ZW1wKTsKCQlyZXR1cm4gaGVhZDsKCX0Kd2hpbGUocG9zPjIgJiYgdGVtcC0+bmV4dCE9TlVMTCkKewoJdGVtcD10ZW1wLT5uZXh0OwoJcG9zLS07Cn0KdGVtcDE9dGVtcC0+bmV4dDsKdGVtcC0+bmV4dD10ZW1wLT5uZXh0LT5uZXh0OwpmcmVlKHRlbXAxKTsKcmV0dXJuIGhlYWQ7Cn0Kdm9pZCBwcmludGxpbmtlZChzdHJ1Y3Qgbm9kZSogaGVhZCkKewoJd2hpbGUoaGVhZCE9TlVMTCkKCXsKCQljb3V0PDxoZWFkLT5kYXRhPDwiICI7CgkJaGVhZD1oZWFkLT5uZXh0OwoJfQp9CmludCBtYWluKCkgewoJc3RydWN0IG5vZGUqIGhlYWQ9Y3JlYXRlbm9kZSgxKTsKCWhlYWQtPm5leHQ9Y3JlYXRlbm9kZSgzKTsKCWhlYWQtPm5leHQtPm5leHQ9Y3JlYXRlbm9kZSg1KTsKCWhlYWQtPm5leHQtPm5leHQtPm5leHQ9Y3JlYXRlbm9kZSg2KTsKCXN0cnVjdCBub2RlKiByZXN1bHQ9aW5zZXJ0c29ydGVkKGhlYWQsMSk7CglwcmludGxpbmtlZChyZXN1bHQpOwoJY291dDw8IlxuIjsKCXN0cnVjdCBub2RlKiByZXN1bHQxPWRlbGV0ZXNvcnRlZChoZWFkLDUpOwoJcHJpbnRsaW5rZWQocmVzdWx0MSk7CglyZXR1cm4gMDsKfQ==