/* * For your reference: * * DoublyLinkedListNode { * int data; * DoublyLinkedListNode next; * DoublyLinkedListNode prev; * } */ static DoublyLinkedListNode reverse(DoublyLinkedListNode head) { DoublyLinkedListNode current = head; DoublyLinkedListNode temp = null; //swap next and prev of all nodes of double linkedlist while (current!=null){ temp = current.prev; current.prev = current.next; current.next = temp; current = current.prev;//move to last one } //check before changing head if (temp!=null){ head = temp.prev; } return head; }