// Reverse a linked list by Tail Recursive Method
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node* next;
Node( int x) {
data = x;
next = NULL ;
}
} ;
void reverseUtil( Node* curr, Node* prev, Node** head) ;
void reverse( Node** head)
{
if ( ! head)
return ;
reverseUtil( * head, NULL , head) ;
}
void reverseUtil( Node* curr, Node* prev, Node** head)
{
if ( ! curr- > next) {
* head = curr;
curr- > next = prev;
return ;
}
Node* next = curr- > next;
curr- > next = prev;
reverseUtil( next, curr, head) ;
}
void printlist( Node* head)
{
while ( head ! = NULL ) {
cout << head- > data << " " ;
head = head- > next;
}
cout << endl;
}
int main( )
{
Node* head1 = new Node( 8 ) ;
head1- > next = new Node( 7 ) ;
head1- > next- > next = new Node( 6 ) ;
head1- > next- > next- > next = new Node( 5 ) ;
head1- > next- > next- > next- > next = new Node( 4 ) ;
head1- > next- > next- > next- > next- > next = new Node( 3 ) ;
head1- > next- > next- > next- > next- > next- > next = new Node( 2 ) ;
head1- > next- > next- > next- > next- > next- > next- > next= new Node( 1 ) ;
cout << "Given linked list\n " ;
printlist( head1) ;
reverse( & head1) ;
cout << "Reversed linked list\n " ;
printlist( head1) ;
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
Ly8gUmV2ZXJzZSBhIGxpbmtlZCBsaXN0IGJ5IFRhaWwgUmVjdXJzaXZlIE1ldGhvZAojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgc3RydWN0IE5vZGUqIG5leHQ7CiAgICAgIE5vZGUoaW50IHgpIHsKICAgICAgICBkYXRhID0geDsKICAgICAgICAgIG5leHQgPSBOVUxMOwogICAgfQp9Owp2b2lkIHJldmVyc2VVdGlsKE5vZGUqIGN1cnIsIE5vZGUqIHByZXYsIE5vZGUqKiBoZWFkKTsKdm9pZCByZXZlcnNlKE5vZGUqKiBoZWFkKQp7CiAgICBpZiAoIWhlYWQpCiAgICAgICAgcmV0dXJuOwogICAgcmV2ZXJzZVV0aWwoKmhlYWQsIE5VTEwsIGhlYWQpOwp9CnZvaWQgcmV2ZXJzZVV0aWwoTm9kZSogY3VyciwgTm9kZSogcHJldiwgTm9kZSoqIGhlYWQpCnsKICAgIGlmICghY3Vyci0+bmV4dCkgewogICAgICAgICpoZWFkID0gY3VycjsKICAgICAgICBjdXJyLT5uZXh0ID0gcHJldjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBOb2RlKiBuZXh0ID0gY3Vyci0+bmV4dDsKICAgIGN1cnItPm5leHQgPSBwcmV2OwogICAgcmV2ZXJzZVV0aWwobmV4dCwgY3VyciwgaGVhZCk7Cn0Kdm9pZCBwcmludGxpc3QoTm9kZSogaGVhZCkKewogICAgd2hpbGUgKGhlYWQgIT0gTlVMTCkgewogICAgICAgIGNvdXQgPDwgaGVhZC0+ZGF0YSA8PCAiICI7CiAgICAgICAgaGVhZCA9IGhlYWQtPm5leHQ7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7Cn0KaW50IG1haW4oKQp7CiAgICBOb2RlKiBoZWFkMSA9IG5ldyBOb2RlKDgpOwogICAgaGVhZDEtPm5leHQgPSBuZXcgTm9kZSg3KTsKICAgIGhlYWQxLT5uZXh0LT5uZXh0ID0gbmV3IE5vZGUoNik7CiAgICBoZWFkMS0+bmV4dC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlKDUpOwogICAgaGVhZDEtPm5leHQtPm5leHQtPm5leHQtPm5leHQgPSBuZXcgTm9kZSg0KTsKICAgIGhlYWQxLT5uZXh0LT5uZXh0LT5uZXh0LT5uZXh0LT5uZXh0ID0gbmV3IE5vZGUoMyk7CiAgICBoZWFkMS0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlKDIpOwogICAgaGVhZDEtPm5leHQtPm5leHQtPm5leHQtPm5leHQtPm5leHQtPm5leHQtPm5leHQ9IG5ldyBOb2RlKDEpOwogICAgY291dCA8PCAiR2l2ZW4gbGlua2VkIGxpc3RcbiI7CiAgICBwcmludGxpc3QoaGVhZDEpOwogICAgcmV2ZXJzZSgmaGVhZDEpOwogICAgY291dCA8PCAiUmV2ZXJzZWQgbGlua2VkIGxpc3RcbiI7CiAgICBwcmludGxpc3QoaGVhZDEpOwogICAgcmV0dXJuIDA7Cn0KLy8gbWFtIGlhbSBqdXN0IHRyaWVkIHRoZXNlIHByb2dyYW1zIGFzIHBlciB0aGUgdzNzY2hvb2xzIGlmIGkgcmV2aXNlZCB0aGUgcHJldmlvb3VzIHRvcGljcyBpIGNhbiBtYWtlIGl0IGluIGVmZWN0aXZlIHdheSBwbGVhc2UgcHJvdmlkZSB0aGUgcmVjb3JkaW5nIG9mIHdlZWsgMi0yIHNlc3Npb24gbWFt