#include <iostream>
using namespace std;
class Node{
public :
int data;
Node *next;
Node () {
data = 0;
next = NULL;
}
Node(int data) {
this->data = data;
this->next = NULL;
}
};
Node* reverseLinkedList(Node *head){
if(head == NULL || head->next == NULL) {
return NULL;
}
Node *current = head;
Node *prev = NULL, *next = NULL;
while(current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
head = prev;
return head;
}
void traverse(Node *head) {
if(head == NULL) {
cout<< "List is empty";
return;
}
Node *temp = head;
while(temp != NULL) {
cout << temp->data << endl;
temp = temp->next;
}
}
int main() {
Node *head = new Node(1);
head->next = new Node(2);
head->next->next = new Node(3);
traverse(head);
cout << "Reversed Linked List" <<endl;
head = reverseLinkedList(head);
traverse(head);
return 0;
}