#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *head = NULL;
void appendNode(int data)
{
struct node
*newnode
= (struct node
*)malloc(sizeof(struct node
)); newnode->data = data;
newnode->next = NULL;
if(head == NULL)
head = newnode;
else
{
struct node *temp = head;
while(temp->next)
temp = temp->next;
temp->next = newnode;
}
}
void displayNodes()
{
struct node *temp = head;
if(temp)
{
while(temp)
{
temp = temp->next;
}
}
}
//REVERSING THE LINKEDLIST BY RECURSION
void reverseListByRecursion(struct node *currNode)
{
if(currNode==NULL)
return;
else
{
reverseListByRecursion(currNode->next);
printf("%d->",currNode
->data
); }
}
//REVERSING THE LINKEDLIST BY USING POINTERS
void reverseListByPointers()
{
struct node *p = head,
*q = NULL,
*r;
while(p!=NULL)
{
r = q;
q = p;
p = p->next;
q->next = r;
}
head = q;
}
int main()
{
appendNode(123);
appendNode(234);
appendNode(345);
printf("\n\nActual LinkedList\n"); displayNodes();
//REVERSING THE LINKEDLIST BY RECURSION
printf("\n\nReversed LL by recursion\n"); reverseListByRecursion(head);
//REVERSING THE LINKEDLIST BY USING POINTERS
reverseListByPointers();
printf("\n\nReversed LL by pointers\n"); displayNodes();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlCnsKCWludCBkYXRhOwoJc3RydWN0IG5vZGUgKm5leHQ7Cn07CgpzdHJ1Y3Qgbm9kZSAqaGVhZCA9IE5VTEw7Cgp2b2lkIGFwcGVuZE5vZGUoaW50IGRhdGEpCnsKCXN0cnVjdCBub2RlICpuZXdub2RlID0gKHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJbmV3bm9kZS0+ZGF0YSA9IGRhdGE7CgluZXdub2RlLT5uZXh0ID0gTlVMTDsKCglpZihoZWFkID09IE5VTEwpCgkJaGVhZCA9IG5ld25vZGU7CgllbHNlCgl7CgkJc3RydWN0IG5vZGUgKnRlbXAgPSBoZWFkOwoJCXdoaWxlKHRlbXAtPm5leHQpCgkJCXRlbXAgPSB0ZW1wLT5uZXh0OwoJCXRlbXAtPm5leHQgPSBuZXdub2RlOwoJfQp9Cgp2b2lkIGRpc3BsYXlOb2RlcygpCnsKCXN0cnVjdCBub2RlICp0ZW1wID0gaGVhZDsKCglwcmludGYoIkhFQUQtPiIpOwoJaWYodGVtcCkKICAgICAgICB7CgkJd2hpbGUodGVtcCkKICAgICAgICAgICAgICAgIHsKCQkJcHJpbnRmKCIlZC0+Iix0ZW1wLT5kYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoJcHJpbnRmKCJOVUxMIik7Cn0KCi8vUkVWRVJTSU5HIFRIRSBMSU5LRURMSVNUIEJZIFJFQ1VSU0lPTgp2b2lkIHJldmVyc2VMaXN0QnlSZWN1cnNpb24oc3RydWN0IG5vZGUgKmN1cnJOb2RlKQp7CglpZihjdXJyTm9kZT09TlVMTCkKCQlyZXR1cm47CgllbHNlCgl7CgkJcmV2ZXJzZUxpc3RCeVJlY3Vyc2lvbihjdXJyTm9kZS0+bmV4dCk7CgkJcHJpbnRmKCIlZC0+IixjdXJyTm9kZS0+ZGF0YSk7Cgl9Cn0KCi8vUkVWRVJTSU5HIFRIRSBMSU5LRURMSVNUIEJZIFVTSU5HIFBPSU5URVJTCnZvaWQgcmV2ZXJzZUxpc3RCeVBvaW50ZXJzKCkKewoJc3RydWN0IG5vZGUgKnAgPSBoZWFkLAoJCSAgICAqcSA9IE5VTEwsCgkJICAgICpyOwoKCXdoaWxlKHAhPU5VTEwpCgl7CgkJciA9IHE7CgkJcSA9IHA7CgkJcCA9IHAtPm5leHQ7CgkJcS0+bmV4dCA9IHI7Cgl9CgoJaGVhZCA9IHE7Cn0KCgppbnQgbWFpbigpCnsKCWFwcGVuZE5vZGUoMTIzKTsKCWFwcGVuZE5vZGUoMjM0KTsKCWFwcGVuZE5vZGUoMzQ1KTsKCXByaW50ZigiXG5cbkFjdHVhbCBMaW5rZWRMaXN0XG4iKTsKCWRpc3BsYXlOb2RlcygpOwoKICAgIC8vUkVWRVJTSU5HIFRIRSBMSU5LRURMSVNUIEJZIFJFQ1VSU0lPTgoJcHJpbnRmKCJcblxuUmV2ZXJzZWQgTEwgYnkgcmVjdXJzaW9uXG4iKTsKICAgIHByaW50ZigiXG5cbkhFQUQtPiIpOwoJcmV2ZXJzZUxpc3RCeVJlY3Vyc2lvbihoZWFkKTsKCXByaW50ZigiTlVMTCIpOwoKICAgIC8vUkVWRVJTSU5HIFRIRSBMSU5LRURMSVNUIEJZIFVTSU5HIFBPSU5URVJTCiAgICAKCXJldmVyc2VMaXN0QnlQb2ludGVycygpOwoJcHJpbnRmKCJcblxuUmV2ZXJzZWQgTEwgYnkgcG9pbnRlcnNcbiIpOwoJZGlzcGxheU5vZGVzKCk7CgkKICAgICAgICByZXR1cm4gMDsKfQ==