#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 ) ;
displayNodes( ) ;
//REVERSING THE LINKEDLIST BY RECURSION
reverseListByRecursion( head) ;
//REVERSING THE LINKEDLIST BY USING POINTERS
reverseListByPointers( )
displayNodes( ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlCnsKCWludCBkYXRhOwoJc3RydWN0IG5vZGUgKm5leHQ7Cn07CgpzdHJ1Y3Qgbm9kZSAqaGVhZCA9IE5VTEw7Cgp2b2lkIGFwcGVuZE5vZGUoaW50IGRhdGEpCnsKCXN0cnVjdCBub2RlICpuZXdub2RlID0gKHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJbmV3bm9kZS0+ZGF0YSA9IGRhdGE7CgluZXdub2RlLT5uZXh0ID0gTlVMTDsKCglpZihoZWFkID09IE5VTEwpCgkJaGVhZCA9IG5ld25vZGU7CgllbHNlCgl7CgkJc3RydWN0IG5vZGUgKnRlbXAgPSBoZWFkOwoJCXdoaWxlKHRlbXAtPm5leHQpCgkJCXRlbXAgPSB0ZW1wLT5uZXh0OwoJCXRlbXAtPm5leHQgPSBuZXdub2RlOwoJfQp9Cgp2b2lkIGRpc3BsYXlOb2RlcygpCnsKCXN0cnVjdCBub2RlICp0ZW1wID0gaGVhZDsKCglwcmludGYoIkhFQUQtPiIpOwoJaWYodGVtcCkKICAgICAgICB7CgkJd2hpbGUodGVtcCkKICAgICAgICAgICAgICAgIHsKCQkJcHJpbnRmKCIlZC0+Iix0ZW1wLT5kYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoJcHJpbnRmKCJOVUxMIik7Cn0KCi8vUkVWRVJTSU5HIFRIRSBMSU5LRURMSVNUIEJZIFJFQ1VSU0lPTgp2b2lkIHJldmVyc2VMaXN0QnlSZWN1cnNpb24oc3RydWN0IG5vZGUgKmN1cnJOb2RlKQp7CglpZihjdXJyTm9kZT09TlVMTCkKCQlyZXR1cm47CgllbHNlCgl7CgkJcmV2ZXJzZUxpc3RCeVJlY3Vyc2lvbihjdXJyTm9kZS0+bmV4dCk7CgkJcHJpbnRmKCIlZC0+IixjdXJyTm9kZS0+ZGF0YSk7Cgl9Cn0KCi8vUkVWRVJTSU5HIFRIRSBMSU5LRURMSVNUIEJZIFVTSU5HIFBPSU5URVJTCnZvaWQgcmV2ZXJzZUxpc3RCeVBvaW50ZXJzKCkKewoJc3RydWN0IG5vZGUgKnAgPSBoZWFkLAoJCSAgICAqcSA9IG51bGwsCgkJICAgICpyOwoKCXdoaWxlKHAhPU5VTEwpCgl7CgkJciA9IHE7CgkJcSA9IHA7CgkJcCA9IHAtPm5leHQ7CgkJcS0+bmV4dCA9IHI7Cgl9CgoJaGVhZCA9IHE7Cn0KCgppbnQgbWFpbigpCnsKCWFwcGVuZE5vZGUoMTIzKTsKCWFwcGVuZE5vZGUoMjM0KTsKCWFwcGVuZE5vZGUoMzQ1KTsKCglkaXNwbGF5Tm9kZXMoKTsKCiAgICAvL1JFVkVSU0lORyBUSEUgTElOS0VETElTVCBCWSBSRUNVUlNJT04KICAgIHByaW50ZigiXG5cbkhFQUQtPiIpOwoJcmV2ZXJzZUxpc3RCeVJlY3Vyc2lvbihoZWFkKTsKCXByaW50ZigiTlVMTCIpOwoKICAgIC8vUkVWRVJTSU5HIFRIRSBMSU5LRURMSVNUIEJZIFVTSU5HIFBPSU5URVJTCiAgICAKCXJldmVyc2VMaXN0QnlQb2ludGVycygpCglkaXNwbGF5Tm9kZXMoKTsKCQogICAgICAgIHJldHVybiAwOwp9