The following C function takes a singly-linked list of integers as a parameter…

GATE · 2005 · ITGATE · 2008 · CS

The following C function takes a singly-linked list of integers as a parameter and rearranges the elements of the list. The list is represented as pointer to a structure. The function is called with the list containing the integers 1, 2, 3, 4, 5, 6, 7 in the given order. What will be the contents of the list after the function completes execution?

struct node {
    int value; 
    struct node *next;
};
void rearrange (struct node *list) 
{
    struct node *p, *q;
    int temp;
    if (!list || !list -> next) 
        return;
    p = list; 
    q = list -> next;
    while (q) 
    {
        temp = p -> value;
        p -> value = q -> value;
        q -> value = temp;
        p = q -> next;
        q = p ? p -> next : 0;
    }
}
  1. A.

    1, 2, 3, 4, 5, 6, 7

  2. B.

    2, 1, 4, 3, 6, 5, 7

  3. C.

    1, 3, 2, 5, 4, 7, 6

  4. D.

    2, 3, 4, 5, 6, 7, 1

Attempted by 459 students.

Show answer

Correct answer: B

The worked solution is available to enrolled students.

Video solution available to enrolled students.

Explore the full course: Iocl Engineers Officers Grade A Paper 2

Loading lesson…