fork download
  1. #include <iostream>
  2. struct Node {
  3. int data;
  4. Node* next;
  5.  
  6. Node(int data) : data(data), next(nullptr) {}
  7. };
  8. Node* reverseLinkedList(Node* head) {
  9. Node* prev = nullptr;
  10. Node* current = head;
  11. Node* next = nullptr;
  12.  
  13. while (current != nullptr) {
  14. next = current->next;
  15. current->next = prev;
  16. prev = current;
  17. current = next;
  18. }
  19. head = prev;
  20. return head;
  21. }
  22. void printLinkedList(Node* head) {
  23. while (head != nullptr) {
  24. std::cout << head->data << " ";
  25. head = head->next;
  26. }
  27. std::cout << std::endl;
  28. }
  29.  
  30. int main() {
  31. Node* head = new Node(1);
  32. head->next = new Node(2);
  33. head->next->next = new Node(3);
  34. head->next->next->next = new Node(4);
  35. head->next->next->next->next = new Node(5);
  36. std::cout << "Original linked list: ";
  37. printLinkedList(head);
  38. head = reverseLinkedList(head);
  39. std::cout << "Reversed linked list: ";
  40. printLinkedList(head);
  41. while (head != nullptr) {
  42. Node* temp = head;
  43. head = head->next;
  44. delete temp;
  45. }
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0.01s 5300KB
stdin
Standard input is empty
stdout
Original linked list: 1 2 3 4 5 
Reversed linked list: 5 4 3 2 1