#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node *next;
};
void push(struct node** head,int n){
struct node* new_node = (struct node*) malloc(sizeof(struct node));
new_node->data = n;
new_node->next = *head;
*head = new_node;
}
void display(struct node *head){
while(head != NULL){
printf("%d ",head->data);
head = head->next;
}
}
void swap(struct node *head){
if(head == NULL || head->next == NULL)
return;
struct node *temp = head,*temp1 = head->next,*ptr,*start = NULL;
while(temp1 != NULL){
temp->next = temp1->next;
temp1->next = temp;
if(start == NULL)
start = temp1;
else
ptr->next = temp1;
ptr = temp;
temp = temp->next;
temp1 = temp->next;
display(start);
//getchar();
}
}
int main(){
struct node *start = NULL;
struct node *head;
push(&start,10);
push(&start,9);
push(&start,8);
push(&start,7);
push(&start,6);
push(&start,5);
push(&start,4);
push(&start,3);
push(&start,2);
push(&start,1);
display(start);
printf("\n");
swap(start);
//display(start);
//getchar();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlewogICAgaW50IGRhdGE7CglzdHJ1Y3Qgbm9kZSAqbmV4dDsKfTsKCnZvaWQgcHVzaChzdHJ1Y3Qgbm9kZSoqIGhlYWQsaW50IG4pewoJc3RydWN0IG5vZGUqIG5ld19ub2RlID0gKHN0cnVjdCBub2RlKikgbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJbmV3X25vZGUtPmRhdGEgPSBuOwoJbmV3X25vZGUtPm5leHQgPSAqaGVhZDsKCgkqaGVhZCA9IG5ld19ub2RlOwp9Cgp2b2lkIGRpc3BsYXkoc3RydWN0IG5vZGUgKmhlYWQpewoJd2hpbGUoaGVhZCAhPSBOVUxMKXsKCQlwcmludGYoIiVkICIsaGVhZC0+ZGF0YSk7CgkJaGVhZCA9IGhlYWQtPm5leHQ7Cgl9Cn0KCnZvaWQgc3dhcChzdHJ1Y3Qgbm9kZSAqaGVhZCl7CglpZihoZWFkID09IE5VTEwgfHwgaGVhZC0+bmV4dCA9PSBOVUxMKQoJCXJldHVybjsKCglzdHJ1Y3Qgbm9kZSAqdGVtcCA9IGhlYWQsKnRlbXAxID0gaGVhZC0+bmV4dCwqcHRyLCpzdGFydCA9IE5VTEw7Cgl3aGlsZSh0ZW1wMSAhPSBOVUxMKXsKCQl0ZW1wLT5uZXh0ID0gdGVtcDEtPm5leHQ7CgkJdGVtcDEtPm5leHQgPSB0ZW1wOwoKCQlpZihzdGFydCA9PSBOVUxMKQoJCQlzdGFydCA9IHRlbXAxOwoJCWVsc2UKCQkJcHRyLT5uZXh0ID0gdGVtcDE7IAoJCXB0ciA9IHRlbXA7CQoKCQl0ZW1wID0gdGVtcC0+bmV4dDsKCQl0ZW1wMSA9IHRlbXAtPm5leHQ7CgkJZGlzcGxheShzdGFydCk7CgkJLy9nZXRjaGFyKCk7Cgl9Cn0KCmludCBtYWluKCl7CglzdHJ1Y3Qgbm9kZSAqc3RhcnQgPSBOVUxMOwoJc3RydWN0IG5vZGUgKmhlYWQ7CgoJcHVzaCgmc3RhcnQsMTApOwoJcHVzaCgmc3RhcnQsOSk7CglwdXNoKCZzdGFydCw4KTsKCXB1c2goJnN0YXJ0LDcpOwoJcHVzaCgmc3RhcnQsNik7CglwdXNoKCZzdGFydCw1KTsKCXB1c2goJnN0YXJ0LDQpOwoJcHVzaCgmc3RhcnQsMyk7CglwdXNoKCZzdGFydCwyKTsKCXB1c2goJnN0YXJ0LDEpOwoJZGlzcGxheShzdGFydCk7CglwcmludGYoIlxuIik7CgoJc3dhcChzdGFydCk7CgkvL2Rpc3BsYXkoc3RhcnQpOwoJLy9nZXRjaGFyKCk7CglyZXR1cm4gMDsKfQ==