#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* evenreverse(struct node* head)
{
struct node* head1=NULL;
struct node* tail1=NULL;
struct node* temp=head;
if(head==NULL || head->next==NULL|| head->next->next==NULL)
return head;
while(temp && temp->next)
{
if(head1==NULL)
{
head1=tail1=temp->next;
}
else
{
tail1->next=temp->next;
tail1=tail1->next;
}
temp->next=temp->next->next;
temp=temp->next;
}
tail1->next=NULL;
struct node* cur=head1;
struct node* next=NULL;
struct node* prev=NULL;
while(cur)
{
next=cur->next;
cur->next=prev;
prev=cur;
cur=next;
}
struct node* second=prev;
struct node* first=head;
while(first)
{
temp=second->next;
second->next=first->next;
first->next=second;
second=temp;
first=first->next->next;
}
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(2);
head->next->next=createnode(3);
head->next->next->next=createnode(4);
head->next->next->next->next=createnode(5);
head->next->next->next->next->next=createnode(6);
head=evenreverse(head);
printlinked(head);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgbm9kZXsKCSAgICAgICAgIGludCBkYXRhOwoJICAgICAgICAgc3RydWN0IG5vZGUqIG5leHQ7Cn07CnN0cnVjdCBub2RlKiBjcmVhdGVub2RlKGludCB2YWwpCnsKCXN0cnVjdCBub2RlKiBwPShzdHJ1Y3Qgbm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJcC0+ZGF0YT12YWw7CglwLT5uZXh0PU5VTEw7CglyZXR1cm4gcDsKCQp9CnN0cnVjdCBub2RlKiBldmVucmV2ZXJzZShzdHJ1Y3Qgbm9kZSogaGVhZCkKewoJc3RydWN0IG5vZGUqIGhlYWQxPU5VTEw7CglzdHJ1Y3Qgbm9kZSogdGFpbDE9TlVMTDsKCXN0cnVjdCBub2RlKiB0ZW1wPWhlYWQ7CglpZihoZWFkPT1OVUxMIHx8IGhlYWQtPm5leHQ9PU5VTEx8fCBoZWFkLT5uZXh0LT5uZXh0PT1OVUxMKQoJcmV0dXJuIGhlYWQ7Cgl3aGlsZSh0ZW1wICYmIHRlbXAtPm5leHQpCgl7CgkJaWYoaGVhZDE9PU5VTEwpCgkJewoJCQloZWFkMT10YWlsMT10ZW1wLT5uZXh0OwoJCX0KCQllbHNlCgkJewoJCQl0YWlsMS0+bmV4dD10ZW1wLT5uZXh0OwoJCQl0YWlsMT10YWlsMS0+bmV4dDsKCQl9CgkJdGVtcC0+bmV4dD10ZW1wLT5uZXh0LT5uZXh0OwoJCXRlbXA9dGVtcC0+bmV4dDsKCX0KCXRhaWwxLT5uZXh0PU5VTEw7CglzdHJ1Y3Qgbm9kZSogY3VyPWhlYWQxOwoJc3RydWN0IG5vZGUqIG5leHQ9TlVMTDsKCXN0cnVjdCBub2RlKiBwcmV2PU5VTEw7CgkKCXdoaWxlKGN1cikKCXsKCQluZXh0PWN1ci0+bmV4dDsKCQljdXItPm5leHQ9cHJldjsKCQlwcmV2PWN1cjsKCQljdXI9bmV4dDsKCX0KCXN0cnVjdCBub2RlKiBzZWNvbmQ9cHJldjsKCXN0cnVjdCBub2RlKiBmaXJzdD1oZWFkOwoJd2hpbGUoZmlyc3QpCgl7CgkJdGVtcD1zZWNvbmQtPm5leHQ7CgkJc2Vjb25kLT5uZXh0PWZpcnN0LT5uZXh0OwoJCWZpcnN0LT5uZXh0PXNlY29uZDsKCQlzZWNvbmQ9dGVtcDsKCQlmaXJzdD1maXJzdC0+bmV4dC0+bmV4dDsKCX0KcmV0dXJuIGhlYWQ7CQp9CnZvaWQgcHJpbnRsaW5rZWQoc3RydWN0IG5vZGUqIGhlYWQpCnsKCXdoaWxlKGhlYWQhPU5VTEwpCgl7CgkJY291dDw8aGVhZC0+ZGF0YTw8IiAiOwoJCWhlYWQ9aGVhZC0+bmV4dDsKCX0KfQoKaW50IG1haW4oKSB7CglzdHJ1Y3Qgbm9kZSogaGVhZD1jcmVhdGVub2RlKDEpOwoJaGVhZC0+bmV4dD1jcmVhdGVub2RlKDIpOwoJaGVhZC0+bmV4dC0+bmV4dD1jcmVhdGVub2RlKDMpOwoJaGVhZC0+bmV4dC0+bmV4dC0+bmV4dD1jcmVhdGVub2RlKDQpOwogICAgaGVhZC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dD1jcmVhdGVub2RlKDUpOwoJaGVhZC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dD1jcmVhdGVub2RlKDYpOwoJaGVhZD1ldmVucmV2ZXJzZShoZWFkKTsKCXByaW50bGlua2VkKGhlYWQpOwoJcmV0dXJuIDA7Cn0=