Learn-dsa..in 30 days!



























CC-10 : Reverse DoubleLinkedList.

Description:

Given a DoubleLinkedList with integer data, reverse the order of the nodes.

Test cases and expected outputs:

Input Parameters Expected outputs
63->25->96->32->53->97 97->53->32->96->25->63
88->44->22->66->33->55->77 77->55->33->66->22->44->88

Pseudocode:

Traverse the list from start to end and for each node and interchange the values of nextNode and previousNode Links. You will need temporary marker to do this swap.
At the end of the traversal, set firstNode variable of DoubleLinkedList to the lastNode of the original DoubleLinkedList.

Code:

public  void doubleLinkedListReversal(DoubleLinkedList doubleLinkedList) throws Exception{
	DoubleLinkedListNode currentNode=doubleLinkedList.getFirstNode();
	DoubleLinkedListNode nextNode=null;
	DoubleLinkedListNode previousNode=null;
	do{
		nextNode=currentNode.getNextNode();
		currentNode.setNextNode(currentNode.getPreviousNode());
		currentNode.setPreviousNode(nextNode);
		previousNode=currentNode;
		currentNode=nextNode;			
	}while (currentNode!=null);
	doubleLinkedList.setFirstNode(previousNode);		
}

Click here to download and run code and test cases !