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. // Initialize current, previous and next pointers
  21. Node* current = head;
  22. Node *prev = NULL, *next = NULL;
  23.  
  24. while (current != NULL) {
  25. // Store next
  26. next = current->next;
  27. // Reverse current node's pointer
  28. current->next = prev;
  29. // Move pointers one position ahead.
  30. prev = current;
  31. current = next;
  32. }
  33. head = prev;
  34. }
  35.  
  36. void print()
  37. {
  38. struct Node* temp = head;
  39. while (temp != NULL) {
  40. cout << temp->data << " ";
  41. temp = temp->next;
  42. }
  43. }
  44.  
  45. void push(int data)
  46. {
  47. Node* temp = new Node(data);
  48. temp->next = head;
  49. head = temp;
  50. }
  51. };
  52.  
  53.  
  54. int main()
  55. {
  56. LinkedList l1;
  57. l1.push(5);
  58. l1.push(16);
  59. l1.push(24);
  60. l1.push(59);
  61.  
  62. cout << "Given linked list\n";
  63. l1.print();
  64.  
  65. l1.reverse();
  66.  
  67. cout << "\nReversed linked list \n";
  68. l1.print();
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0.01s 5276KB
stdin
Standard input is empty
stdout
Given linked list
59 24 16 5 
Reversed linked list 
5 16 24 59