#include<iostream>
#include<cstdlib>
#include<string>
#include<climits>
using namespace std;
struct node
{
int info;
struct node *next;
};
void push(struct node **manage,int ele)
{
struct node *temp=(struct node *)malloc(sizeof(struct node));
temp->info=ele;
temp->next=*manage;
*manage=temp;
}
void display(struct node *manage)
{
if(manage==nullptr)
cout<<"\n\n Linked list is empty!!!";
else
{
while(manage!=nullptr)
{
cout<<' '<<manage->info;
manage=manage->next;
}
}
}
void Rotate_Linked_List(struct node **headref,int k)
{
struct node *head=*headref,*ahead;
int count1=0;
if(k<=0)
{
cout<<"\n\n Plz give the value of k +ve !!!";
return;
}
while(++count1<k&&head)
{
head=head->next;
count1;
}
if(head==nullptr)
{
cout<<"\n\n Plz enter the value of k Less than or equal to size of the list!!!";
return;
}
ahead=head->next;
head->next=nullptr;
head=ahead;
while(ahead->next!=nullptr)
ahead=ahead->next;
ahead->next=*headref;
*headref=head;
}
int main()
{
struct node *first=nullptr;
int k=4;
push(&first,60);
push(&first,50);
push(&first,40);
push(&first,30);
push(&first,20);
push(&first,10);
display(first);
Rotate_Linked_List(&first,k);
cout<<"\n\n Rotated Linked List By "<<k<<" Nodes : ";
display(first);
return(0);
}
CiAgICAgICAjaW5jbHVkZTxpb3N0cmVhbT4KICAgICAgICNpbmNsdWRlPGNzdGRsaWI+CiAgICAgICAjaW5jbHVkZTxzdHJpbmc+CiAgICAgICAjaW5jbHVkZTxjbGltaXRzPgoKICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKICAgICAgIHN0cnVjdCBub2RlCiAgICAgICB7CiAgICAgICAgICAgaW50IGluZm87CiAgICAgICAgICAgc3RydWN0IG5vZGUgKm5leHQ7CiAgICAgICB9OwoKCiAgICAgICB2b2lkIHB1c2goc3RydWN0IG5vZGUgKiptYW5hZ2UsaW50IGVsZSkKICAgICAgIHsKICAgICAgICAgICBzdHJ1Y3Qgbm9kZSAqdGVtcD0oc3RydWN0IG5vZGUgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICAgICAgICAgdGVtcC0+aW5mbz1lbGU7CiAgICAgICAgICAgdGVtcC0+bmV4dD0qbWFuYWdlOwogICAgICAgICAgICptYW5hZ2U9dGVtcDsKICAgICAgIH0KCgogICAgICAgdm9pZCBkaXNwbGF5KHN0cnVjdCBub2RlICptYW5hZ2UpCiAgICAgICB7CiAgICAgICAgICBpZihtYW5hZ2U9PW51bGxwdHIpCiAgICAgICAgICAgICBjb3V0PDwiXG5cbiBMaW5rZWQgbGlzdCBpcyBlbXB0eSEhISI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICAgd2hpbGUobWFuYWdlIT1udWxscHRyKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgY291dDw8JyAnPDxtYW5hZ2UtPmluZm87CiAgICAgICAgICAgICAgICAgIG1hbmFnZT1tYW5hZ2UtPm5leHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgfQoKICAgICAgIHZvaWQgUm90YXRlX0xpbmtlZF9MaXN0KHN0cnVjdCBub2RlICoqaGVhZHJlZixpbnQgaykKICAgICAgIHsKICAgICAgICAgIHN0cnVjdCBub2RlICpoZWFkPSpoZWFkcmVmLCphaGVhZDsKICAgICAgICAgIGludCBjb3VudDE9MDsKICAgICAgICAgIGlmKGs8PTApCiAgICAgICAgICB7CiAgICAgICAgICAgICBjb3V0PDwiXG5cbiBQbHogZ2l2ZSB0aGUgdmFsdWUgb2YgayArdmUgISEhIjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIHdoaWxlKCsrY291bnQxPGsmJmhlYWQpCiAgICAgICAgICB7CiAgICAgICAgICAgIGhlYWQ9aGVhZC0+bmV4dDsKICAgICAgICAgICAgY291bnQxOwogICAgICAgICAgfQogICAgICAgICAgaWYoaGVhZD09bnVsbHB0cikKICAgICAgICAgIHsKICAgICAgICAgICAgICBjb3V0PDwiXG5cbiBQbHogZW50ZXIgdGhlIHZhbHVlIG9mIGsgTGVzcyB0aGFuIG9yIGVxdWFsIHRvIHNpemUgb2YgdGhlIGxpc3QhISEiOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGFoZWFkPWhlYWQtPm5leHQ7CiAgICAgICAgICBoZWFkLT5uZXh0PW51bGxwdHI7CiAgICAgICAgICBoZWFkPWFoZWFkOwogICAgICAgICAgd2hpbGUoYWhlYWQtPm5leHQhPW51bGxwdHIpCiAgICAgICAgICAgIGFoZWFkPWFoZWFkLT5uZXh0OwogICAgICAgICAgYWhlYWQtPm5leHQ9KmhlYWRyZWY7CiAgICAgICAgICAqaGVhZHJlZj1oZWFkOwogICAgICAgfQoKCiAgICAgICBpbnQgbWFpbigpCiAgICAgICB7CiAgICAgICAgICBzdHJ1Y3Qgbm9kZSAqZmlyc3Q9bnVsbHB0cjsKICAgICAgICAgIGludCBrPTQ7CiAgICAgICAgICBwdXNoKCZmaXJzdCw2MCk7CiAgICAgICAgICBwdXNoKCZmaXJzdCw1MCk7CiAgICAgICAgICBwdXNoKCZmaXJzdCw0MCk7CiAgICAgICAgICBwdXNoKCZmaXJzdCwzMCk7CiAgICAgICAgICBwdXNoKCZmaXJzdCwyMCk7CiAgICAgICAgICBwdXNoKCZmaXJzdCwxMCk7CiAgICAgICAgICBkaXNwbGF5KGZpcnN0KTsKICAgICAgICAgIFJvdGF0ZV9MaW5rZWRfTGlzdCgmZmlyc3Qsayk7CiAgICAgICAgICBjb3V0PDwiXG5cbiBSb3RhdGVkIExpbmtlZCBMaXN0IEJ5ICI8PGs8PCIgTm9kZXMgOiAiOwogICAgICAgICAgZGlzcGxheShmaXJzdCk7CiAgICAgICAgICByZXR1cm4oMCk7CiAgICAgICB9Cg==