// Reverse a linked list using Recursion
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node* next;
Node( int data)
{
this- > data = data;
next = NULL ;
}
} ;
struct LinkedList {
Node* head;
LinkedList( ) { head = NULL ; }
Node* reverse( Node* head)
{
if ( head == NULL || head- > next == NULL )
return head;
Node* rest = reverse( head- > next) ;
head- > next- > next = head;
head- > next = NULL ;
return rest;
}
void print( )
{
struct Node* temp = head;
while ( temp ! = NULL ) {
cout << temp- > data << " " ;
temp = temp- > next;
}
}
void push( int data)
{
Node* temp = new Node( data) ;
temp- > next = head;
head = temp;
}
} ;
int main( )
{
LinkedList ll;
ll.push ( 345 ) ;
ll.push ( 89 ) ;
ll.push ( 77 ) ;
ll.push ( 65 ) ;
cout << "Given linked list\n " ;
ll.print ( ) ;
ll.head = ll.reverse ( ll.head ) ;
cout << "\n Reversed linked list \n " ;
ll.print ( ) ;
return 0 ;
}
// mam iam just tried these programs as per the w3schools if i revised the previoous topics i can make it in efective way please provide the recording of week 2-2 session mam
Ly8gUmV2ZXJzZSBhIGxpbmtlZCBsaXN0IHVzaW5nIFJlY3Vyc2lvbgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgc3RydWN0IE5vZGUqIG5leHQ7CiAgICBOb2RlKGludCBkYXRhKQogICAgewogICAgICAgIHRoaXMtPmRhdGEgPSBkYXRhOwogICAgICAgIG5leHQgPSBOVUxMOwogICAgfQp9OwoKc3RydWN0IExpbmtlZExpc3QgewogICAgTm9kZSogaGVhZDsKICAgIExpbmtlZExpc3QoKSB7IGhlYWQgPSBOVUxMOyB9CgogICAgTm9kZSogcmV2ZXJzZShOb2RlKiBoZWFkKQogICAgewogICAgICAgIGlmIChoZWFkID09IE5VTEwgfHwgaGVhZC0+bmV4dCA9PSBOVUxMKQogICAgICAgICAgICByZXR1cm4gaGVhZDsKICAgICAgICBOb2RlKiByZXN0ID0gcmV2ZXJzZShoZWFkLT5uZXh0KTsKICAgICAgICBoZWFkLT5uZXh0LT5uZXh0ID0gaGVhZDsKICAgICAgICBoZWFkLT5uZXh0ID0gTlVMTDsKICAgICAgICByZXR1cm4gcmVzdDsKICAgIH0KICAgIHZvaWQgcHJpbnQoKQogICAgewogICAgICAgIHN0cnVjdCBOb2RlKiB0ZW1wID0gaGVhZDsKICAgICAgICB3aGlsZSAodGVtcCAhPSBOVUxMKSB7CiAgICAgICAgICAgIGNvdXQgPDwgdGVtcC0+ZGF0YSA8PCAiICI7CiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgIH0KICAgIH0KICAgIHZvaWQgcHVzaChpbnQgZGF0YSkKICAgIHsKICAgICAgICBOb2RlKiB0ZW1wID0gbmV3IE5vZGUoZGF0YSk7CiAgICAgICAgdGVtcC0+bmV4dCA9IGhlYWQ7CiAgICAgICAgaGVhZCA9IHRlbXA7CiAgICB9Cn07CmludCBtYWluKCkKewogICAgTGlua2VkTGlzdCBsbDsKCWxsLnB1c2goMzQ1KTsKICAgIGxsLnB1c2goODkpOwogICAgbGwucHVzaCg3Nyk7CiAgICBsbC5wdXNoKDY1KTsKICAgIGNvdXQgPDwgIkdpdmVuIGxpbmtlZCBsaXN0XG4iOwogICAgbGwucHJpbnQoKTsKICAgIGxsLmhlYWQgPSBsbC5yZXZlcnNlKGxsLmhlYWQpOwogICAgY291dCA8PCAiXG5SZXZlcnNlZCBsaW5rZWQgbGlzdCBcbiI7CiAgICBsbC5wcmludCgpOwogICAgcmV0dXJuIDA7Cn0KLy8gbWFtIGlhbSBqdXN0IHRyaWVkIHRoZXNlIHByb2dyYW1zIGFzIHBlciB0aGUgdzNzY2hvb2xzIGlmIGkgcmV2aXNlZCB0aGUgcHJldmlvb3VzIHRvcGljcyBpIGNhbiBtYWtlIGl0IGluIGVmZWN0aXZlIHdheSBwbGVhc2UgcHJvdmlkZSB0aGUgcmVjb3JkaW5nIG9mIHdlZWsgMi0yIHNlc3Npb24gbWFtCg==