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. void reverse()
  19. {
  20. Node* current = head;
  21. Node *prev = NULL, *next = NULL;
  22.  
  23. while (current != NULL) {
  24. next = current->next;
  25. current->next = prev;
  26. prev = current;
  27. current = next;
  28. }
  29. head = prev;
  30. }
  31.  
  32. void print()
  33. {
  34. struct Node* temp = head;
  35. while (temp != NULL) {
  36. cout << temp->data << " ";
  37. temp = temp->next;
  38. }
  39. }
  40.  
  41. void push(int data)
  42. {
  43. Node* temp = new Node(data);
  44. temp->next = head;
  45. head = temp;
  46. }
  47. };
  48.  
  49. int main()
  50. {
  51. LinkedList ll;
  52. ll.push(10);
  53. ll.push(20);
  54. ll.push(30);
  55. ll.push(40);
  56. ll.push(50);
  57.  
  58. cout << "Given linked list\n";
  59. ll.print();
  60.  
  61. ll.reverse();
  62.  
  63. cout << "\nReversed linked list \n";
  64. ll.print();
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0s 5292KB
stdin
Standard input is empty
stdout
Given linked list
50 40 30 20 10 
Reversed linked list 
10 20 30 40 50