Consider the following function that takes reference to head of a Doubly…

1996

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?

  1. A.

    2 <--> 1 <--> 4 <--> 3 <--> 6 <--> 5

  2. B.

    5 <--> 4 <--> 3 <--> 2 <--> 1 <--> 6

  3. C.

    6 <--> 5 <--> 4 <--> 3 <--> 2 <--> 1

  4. D.

    6 <--> 5 <--> 4 <--> 3 <--> 1 <--> 2

Attempted by 31 students.

Show answer & explanation

Correct answer: C

The function iterates through the list, swapping the prev and next pointers for each node. Since the traversal moves to the new prev (which holds the original next node), it processes every node exactly once. This pointer manipulation effectively reverses the direction of all links, transforming 1 <--> ... <--> 6 into 6 <--> ... <--> 1.

A video solution is available for this question — log in and enroll to watch it.

Explore the full course: Gate Guidance By Sanchit Sir