#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
node* next;
node(int value)
{ data=value;
next=nullptr;
}
};
class linkedlist{
private:
node* head;
node* reverse(node *currenthead,int part)
{
node* current=currenthead;
node* save=nullptr;
node* prev=nullptr;
int count=0;
while(count<part&& current!=nullptr)
{
save=current->next;
current->next=prev;
prev=current;
current=save;
count++;
}
if(save!=nullptr)
{
currenthead->next=reverse(save,part);
}
return prev;
}
public:
linkedlist()
{
head=nullptr;
}
void add(int val)
{
node *newnode=new node(val);
if(!head)
{
head=newnode;
newnode->next=nullptr;
return;
}
node* temp=head;
while(temp->next!=nullptr)
{
temp=temp->next;
}
temp->next=newnode;
newnode->next=nullptr;
}
void reverseinprt(int part)
{
head=reverse(head,part);
}
void display()
{
node* temp=head;
while(temp)
{
cout<<temp->data<<" ";
temp=temp->next;
}
}
};
int main()
{
int len,partial;
cin>>len>>partial;
linkedlist l1;
cout<<"Enter the list data"<<endl;
for(int i=0;i<len;i++)
{
int m;cin>>m;
l1.add(m);
}
l1.display();
cout<<endl;
l1.reverseinprt(partial);
l1.display();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IG5vZGV7CmludCBkYXRhOwpub2RlKiBuZXh0Owpub2RlKGludCB2YWx1ZSkKeyBkYXRhPXZhbHVlOwpuZXh0PW51bGxwdHI7Cn0KfTsKCmNsYXNzIGxpbmtlZGxpc3R7Cglwcml2YXRlOgoJbm9kZSogaGVhZDsKCQoJbm9kZSogcmV2ZXJzZShub2RlICpjdXJyZW50aGVhZCxpbnQgcGFydCkKCXsKCQlub2RlKiBjdXJyZW50PWN1cnJlbnRoZWFkOwoJCW5vZGUqIHNhdmU9bnVsbHB0cjsKCQlub2RlKiBwcmV2PW51bGxwdHI7CgkJaW50IGNvdW50PTA7CgkJd2hpbGUoY291bnQ8cGFydCYmIGN1cnJlbnQhPW51bGxwdHIpCgkJewoJCQlzYXZlPWN1cnJlbnQtPm5leHQ7CgkJCWN1cnJlbnQtPm5leHQ9cHJldjsKCQkJcHJldj1jdXJyZW50OwoJCQljdXJyZW50PXNhdmU7CgkJCWNvdW50Kys7CgkJfQoJCWlmKHNhdmUhPW51bGxwdHIpCgkJewoJCQljdXJyZW50aGVhZC0+bmV4dD1yZXZlcnNlKHNhdmUscGFydCk7CgkJfQoJCXJldHVybiBwcmV2OwoJfQoJcHVibGljOgoJbGlua2VkbGlzdCgpCgl7CgkJaGVhZD1udWxscHRyOwoJfQoJCgl2b2lkIGFkZChpbnQgdmFsKQoJewoJCW5vZGUgKm5ld25vZGU9bmV3IG5vZGUodmFsKTsKCQlpZighaGVhZCkKCQl7CgkJCWhlYWQ9bmV3bm9kZTsKCQkJbmV3bm9kZS0+bmV4dD1udWxscHRyOwoJCQlyZXR1cm47CgkJfQoJCQoJCW5vZGUqIHRlbXA9aGVhZDsKCQl3aGlsZSh0ZW1wLT5uZXh0IT1udWxscHRyKQoJCXsKCQkJdGVtcD10ZW1wLT5uZXh0OwoJCX0KCQkJdGVtcC0+bmV4dD1uZXdub2RlOwoJCQluZXdub2RlLT5uZXh0PW51bGxwdHI7CgoJfQoJCgl2b2lkIHJldmVyc2VpbnBydChpbnQgcGFydCkKCXsKCQloZWFkPXJldmVyc2UoaGVhZCxwYXJ0KTsKCX0KCXZvaWQgZGlzcGxheSgpCgl7CgkJbm9kZSogdGVtcD1oZWFkOwoJCXdoaWxlKHRlbXApCgkJewoJCQljb3V0PDx0ZW1wLT5kYXRhPDwiICI7CgkJCXRlbXA9dGVtcC0+bmV4dDsKCQl9Cgl9Cn07CgppbnQgbWFpbigpCnsKCWludCBsZW4scGFydGlhbDsKCWNpbj4+bGVuPj5wYXJ0aWFsOwoJbGlua2VkbGlzdCBsMTsKCWNvdXQ8PCJFbnRlciB0aGUgbGlzdCBkYXRhIjw8ZW5kbDsKCWZvcihpbnQgaT0wO2k8bGVuO2krKykKCXsKCQlpbnQgbTtjaW4+Pm07CgkJbDEuYWRkKG0pOwoJfQoJbDEuZGlzcGxheSgpOwoJY291dDw8ZW5kbDsKCWwxLnJldmVyc2VpbnBydChwYXJ0aWFsKTsKCWwxLmRpc3BsYXkoKTsKCXJldHVybiAwOwp9Cg==