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