#include <iostream>
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode reverseList(ListNode head) {
ListNode* prev = nullptr;
ListNode* current = head;
ListNode* next = nullptr;
while (current != nullptr) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
return prev;
}
int main() {
// Example usage:
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);
std::cout << "Original List: 1 -> 2 -> 3 -> 4\n";
head = reverseList(head);
std::cout << "Reversed List: ";
while (head != nullptr) {
std::cout << head->val << " ";
head = head->next;
}
return 0;
}