#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
typedef struct node* Node;
struct node {
int data;
Node next;
};
void swapAdjacent(Node);
void print(Node);
Node root;
int main()
{
Node temp1,temp2;
root=(Node)malloc(sizeof(node));
root->data=1;
temp1=(Node)malloc(sizeof(node));
root->next=temp1;
temp1->data=2;
temp1->next=NULL;
for(int i=3;i<=6;i++)
{
temp2=(Node)malloc(sizeof(node));
temp1->next=temp2;
temp2->data=i;
temp2->next=NULL;
temp1=temp1->next;
}
print(root);
swapAdjacent(root);
print(root);
return 0;
}
void print(Node root)
{
Node temp;
cout<<"\nPrinting...\n";
for(temp=root;temp!=NULL;temp=temp->next)
cout<<temp->data<<"\n";
}
void swapAdjacent(Node head)
{
Node currentNode=NULL,prevNode=NULL,nextNode=NULL;
bool notFirst=false;
for(currentNode=head;(!notFirst) || currentNode!=NULL;currentNode=currentNode->next)
{
cout<<"\ncurrent node data " << currentNode->data << "\n";
nextNode=currentNode->next;
if(!notFirst)
root=nextNode;
if(notFirst)
prevNode->next=nextNode;
prevNode=currentNode;
currentNode->next=nextNode->next;
nextNode->next=currentNode;
notFirst=true;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNzdGRsaWI+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgc3RydWN0IG5vZGUqIE5vZGU7CnN0cnVjdCBub2RlIHsKCWludCBkYXRhOwoJTm9kZSBuZXh0Owp9OwoKdm9pZCBzd2FwQWRqYWNlbnQoTm9kZSk7CnZvaWQgcHJpbnQoTm9kZSk7Ck5vZGUgcm9vdDsKaW50IG1haW4oKQp7CglOb2RlIHRlbXAxLHRlbXAyOwoJcm9vdD0oTm9kZSltYWxsb2Moc2l6ZW9mKG5vZGUpKTsKCXJvb3QtPmRhdGE9MTsKCXRlbXAxPShOb2RlKW1hbGxvYyhzaXplb2Yobm9kZSkpOwoJcm9vdC0+bmV4dD10ZW1wMTsKCXRlbXAxLT5kYXRhPTI7Cgl0ZW1wMS0+bmV4dD1OVUxMOwoJZm9yKGludCBpPTM7aTw9NjtpKyspCgl7CgkJdGVtcDI9KE5vZGUpbWFsbG9jKHNpemVvZihub2RlKSk7CQkJCgkJdGVtcDEtPm5leHQ9dGVtcDI7CgkJdGVtcDItPmRhdGE9aTsKCQl0ZW1wMi0+bmV4dD1OVUxMOwoJCXRlbXAxPXRlbXAxLT5uZXh0OwoJfQoJcHJpbnQocm9vdCk7Cglzd2FwQWRqYWNlbnQocm9vdCk7CglwcmludChyb290KTsKCXJldHVybiAwOwoJCn0KCnZvaWQgcHJpbnQoTm9kZSByb290KQp7CglOb2RlIHRlbXA7Cgljb3V0PDwiXG5QcmludGluZy4uLlxuIjsKICAgZm9yKHRlbXA9cm9vdDt0ZW1wIT1OVUxMO3RlbXA9dGVtcC0+bmV4dCkKCWNvdXQ8PHRlbXAtPmRhdGE8PCJcbiI7Cn0KCnZvaWQgc3dhcEFkamFjZW50KE5vZGUgaGVhZCkKewoJTm9kZSBjdXJyZW50Tm9kZT1OVUxMLHByZXZOb2RlPU5VTEwsbmV4dE5vZGU9TlVMTDsKCWJvb2wgbm90Rmlyc3Q9ZmFsc2U7Cglmb3IoY3VycmVudE5vZGU9aGVhZDsoIW5vdEZpcnN0KSB8fCBjdXJyZW50Tm9kZSE9TlVMTDtjdXJyZW50Tm9kZT1jdXJyZW50Tm9kZS0+bmV4dCkKCXsKCQljb3V0PDwiXG5jdXJyZW50IG5vZGUgZGF0YSAiIDw8IGN1cnJlbnROb2RlLT5kYXRhIDw8ICJcbiI7CgkJbmV4dE5vZGU9Y3VycmVudE5vZGUtPm5leHQ7CQoJCWlmKCFub3RGaXJzdCkKCQlyb290PW5leHROb2RlOwoJCWlmKG5vdEZpcnN0KQoJCXByZXZOb2RlLT5uZXh0PW5leHROb2RlOwkKCQlwcmV2Tm9kZT1jdXJyZW50Tm9kZTsKCQljdXJyZW50Tm9kZS0+bmV4dD1uZXh0Tm9kZS0+bmV4dDsKCQluZXh0Tm9kZS0+bmV4dD1jdXJyZW50Tm9kZTsKCQlub3RGaXJzdD10cnVlOwoJCgl9Cn0=