fork download
  1. // Iterative C++ program to reverse a linked list
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. // link list node
  6. struct Node {
  7. int data;
  8. struct Node* next;
  9. Node(int data)
  10. {
  11. this->data = data;
  12. next = NULL;
  13. }
  14. };
  15.  
  16. struct LinkedList {
  17. Node* head;
  18. LinkedList() { head = NULL; }
  19.  
  20. //reverse the linked list
  21. void reverse()
  22. {
  23. // Initiate current, previous and next pointers
  24. Node* current = head;
  25. Node *prev = NULL, *next = NULL;
  26.  
  27. while (current != NULL) {
  28. // store next pointer
  29. next = current->next;
  30. // reverse current node's pointer
  31. current->next = prev;
  32. // move pointers one position ahead.
  33. prev = current;
  34. current = next;
  35. }
  36. head = prev;
  37. }
  38.  
  39. // print the linked list
  40. void print()
  41. {
  42. struct Node* temp = head;
  43. while (temp != NULL) {
  44. cout << temp->data << " ";
  45. temp = temp->next;
  46. }
  47. }
  48.  
  49. void push(int data)
  50. {
  51. Node* temp = new Node(data);
  52. temp->next = head;
  53. head = temp;
  54. }
  55. };
  56.  
  57.  
  58. int main()
  59. {
  60. // store value in list
  61. LinkedList ll;
  62. int len;
  63. cout << "enter the length\n ";
  64. cin >> len;
  65. cout << "value is: " << len << endl;
  66. for(int i = 0; i < len; i++){
  67. int value;
  68. cin >> value;
  69. ll.push(value);
  70. }
  71.  
  72. cout << "Given linked list\n";
  73. ll.print();
  74.  
  75. ll.reverse();
  76.  
  77. cout << "\nReversed linked list \n";
  78. ll.print();
  79. return 0;
  80. }
  81.  
Success #stdin #stdout 0.01s 5300KB
stdin
4
20
4
15
85
stdout
enter the length
 value is: 4
Given linked list
85 15 4 20 
Reversed linked list 
20 4 15 85