Added Reverse a linked list using recursion
parent
62907b69ec
commit
5d14744e02
|
@ -0,0 +1,96 @@
|
||||||
|
#include<bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Node {
|
||||||
|
public:
|
||||||
|
int data;
|
||||||
|
Node* next;
|
||||||
|
|
||||||
|
Node(int val) {
|
||||||
|
this -> data = val;
|
||||||
|
this -> next = NULL;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void insertAtBeg(Node* &head, int val) {
|
||||||
|
Node* node = new Node(val);
|
||||||
|
if(head == NULL) {
|
||||||
|
head = node;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
node -> next = head;
|
||||||
|
head = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
void display(Node* &head) {
|
||||||
|
Node* temp = head;
|
||||||
|
while(temp != NULL) {
|
||||||
|
cout << temp -> data << " -> ";
|
||||||
|
temp = temp -> next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertAtEnd(Node* &head, int val) {
|
||||||
|
Node* temp = head;
|
||||||
|
Node* node = new Node(val);
|
||||||
|
|
||||||
|
if(head == NULL) {
|
||||||
|
insertAtBeg(head, val);
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(temp -> next != NULL) {
|
||||||
|
temp = temp -> next;
|
||||||
|
}
|
||||||
|
temp -> next = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertAtPos(Node* &head, int pos, int val) {
|
||||||
|
Node* node = new Node(val);
|
||||||
|
if(head == NULL) {
|
||||||
|
insertAtBeg(head, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
Node* temp = head;
|
||||||
|
int i = 1;
|
||||||
|
while(i < pos) {
|
||||||
|
temp = temp -> next;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
Node* temp2 = temp -> next;
|
||||||
|
temp -> next = node;
|
||||||
|
node -> next = temp2;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node* revList(Node* &head) {
|
||||||
|
if(head == NULL or head -> next == NULL)
|
||||||
|
return head;
|
||||||
|
|
||||||
|
Node* temp = head -> next;
|
||||||
|
head -> next = NULL;
|
||||||
|
|
||||||
|
Node* rev = revList(temp);
|
||||||
|
temp -> next = head;
|
||||||
|
|
||||||
|
return rev;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Node* head1 = NULL;
|
||||||
|
Node* head2 = NULL;
|
||||||
|
|
||||||
|
insertAtBeg(head1, 1);
|
||||||
|
insertAtEnd(head1, 4);
|
||||||
|
insertAtEnd(head1, 5);
|
||||||
|
insertAtEnd(head1, 2);
|
||||||
|
insertAtEnd(head1, 3);
|
||||||
|
insertAtEnd(head1, 6);
|
||||||
|
|
||||||
|
cout << "List1 : ";
|
||||||
|
display(head1);
|
||||||
|
|
||||||
|
cout << "\nRev List1 : \n";
|
||||||
|
Node* l1 = revList(head1);
|
||||||
|
display(l1);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue