class
GFG
{
static
class
Node
{
int
data;
Node next, prev;
};
static
Node getNode(
int
data)
{
Node new_node =
new
Node();
new_node.data = data;
new_node.next = new_node.prev =
null
;
return
new_node;
}
static
Node push(Node head_ref, Node new_node)
{
new_node.prev =
null
;
new_node.next = (head_ref);
if
((head_ref) !=
null
)
(head_ref).prev = new_node;
(head_ref) = new_node;
return
head_ref;
}
static
Node reverseList(Node head_ref)
{
if
((head_ref) ==
null
|| ((head_ref).next) ==
null
)
return
null
;
Node new_head =
null
;
Node curr = head_ref, next;
while
(curr !=
null
)
{
next = curr.next;
new_head = push(new_head, curr);
curr = next;
}
head_ref = new_head;
return
head_ref;
}
static
void
printList(Node head)
{
while
(head !=
null
)
{
System.out.print(head.data +
" "
);
head = head.next;
}
}
public
static
void
main(String args[])
{
Node head =
null
;
head = push(head, getNode(
2
));
head = push(head, getNode(
4
));
head = push(head, getNode(
8
));
head = push(head, getNode(
10
));
System.out.print(
"Original list: "
);
printList(head);
head = reverseList(head);
System.out.print(
"\nReversed list: "
);
printList(head);
}
}