reverse the linked list (2,4,8,10) by: stack; iteration; recursion. Using C++ Solution #include<iostream> #include<stdio.h> #include<stdlib.h> #includ<stack> using namespace std; struct Node { int value; struct Node* next; }node; struct Node* reverse(struct Node* head) {Â Â // Iteration Method struct Node* current,*prev; current = head; prev = NULL; while(current!=NULL) { next = current->next; current->next = prev; prev = current; current = next; } head = prev;- return head; } struct Node* insert(Node* head,int value) { Node* temp = (struct Node*)malloc(sizeof(struct Node)); temp->value = value; temp->next = NULL; if(head = = NULL) head = temp; else { Node*temp1=head; while(temp1->next!=NULL) temp1 = temp1->next; temp1->next = temp; } return head; } public void print(Node* head) { while(head!=NULL) { cout<<head->value; head = head->next; } } struct Node*recursiveReverse(struct Node* &head) {Â Â //Recursion method if(head==NULL || head->next ==NULL) return; Node*first = head; Node *rest = head->next; if(rest !=NULL) return; recursiveReverse(rest); first ->next->next = first; first->next =NULL; head = rest; return head; } void Reverse(struct Node* head)Â Â // stack Implementation { stack<node*> Stack; node *traverse = head; while(traverse!=NULL) { Stack.push(traverse); traverse = traverse->next;Â Â } node *temp = Stack.top(); head = temp; Stack.pop(); while(!Stack.empty()) { temp->next = Stack.top(); Stack.pop(); temp = temp->next;Â Â } temp->next = NULL; return Stack; } int main() { struct Node* head =NULL; head = insert(head,2); head = insert(head,4); head = insert(head,8); head = insert(head,10); print(head); head= reverse(head); print(head); head = recursiveReverse(head); print(head); head = void Reverse(head); void print(head); return 0; } .