Consider the following function that takes reference to head of a Doubly Linked List as parameter. Assume that a node of doubly linked list has previous pointer as prev and next pointer as next.
void fun(struct node **head_ref)
{
struct node *temp = NULL;
struct node *current = *head_ref;
while (current != NULL)
{
temp = current->prev;
current->prev = current->next;
current->next = temp;
current = current->prev;
}
if(temp != NULL )
*head_ref = temp->prev;
}
Assume that reference of head of following doubly linked list is passed to above function 1 <--> 2 <--> 3 <--> 4 <--> 5 <-->6. What should be the modified linked list after the function call?
A)
|
2 <--> 1 <--> 4 <--> 3 <--> 6 <-->5
|
B)
|
5 <--> 4 <--> 3 <--> 2 <--> 1 <-->6.
|
C)
|
6 <--> 5 <--> 4 <--> 3 <--> 2 <--> 1.
|
D)
|
6 <--> 5 <--> 4 <--> 3 <--> 1 <--> 2
|