fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct Node {
  5. int data;
  6. struct Node* next;
  7. Node(int data)
  8. {
  9. this->data = data;
  10. next = NULL;
  11. }
  12. };
  13.  
  14. struct LinkedList {
  15. Node* head;
  16. LinkedList() { head = NULL; }
  17.  
  18. Node* reverse(Node* head)
  19. {
  20. if (head == NULL || head->next == NULL)
  21. return head;
  22.  
  23. Node* rest = reverse(head->next);
  24. head->next->next = head;
  25.  
  26. head->next = NULL;
  27.  
  28. return rest;
  29. }
  30.  
  31. void print()
  32. {
  33. struct Node* temp = head;
  34. while (temp != NULL) {
  35. cout << temp->data << " ";
  36. temp = temp->next;
  37. }
  38. }
  39.  
  40. void push(int data)
  41. {
  42. Node* temp = new Node(data);
  43. temp->next = head;
  44. head = temp;
  45. }
  46. };
  47.  
  48. int main()
  49. {
  50. LinkedList ll;
  51. ll.push(10);
  52. ll.push(20);
  53. ll.push(30);
  54. ll.push(40);
  55. ll.push(50);
  56.  
  57. cout << "Given linked list\n";
  58. ll.print();
  59.  
  60. ll.head = ll.reverse(ll.head);
  61.  
  62. cout << "\nReversed linked list \n";
  63. ll.print();
  64. return 0;
  65. }
  66.  
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
Given linked list
50 40 30 20 10 
Reversed linked list 
10 20 30 40 50