# GATE | GATE CS 2008 | Question 62

• Last Updated : 28 Jun, 2021

The following C function takes a single-linked list of integers as a parameter and rearranges the elements of the list. 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;``  ``}``}`

(A) 1,2,3,4,5,6,7
(B) 2,1,4,3,6,5,7
(C) 1,3,2,5,4,7,6
(D) 2,3,4,5,6,7,1

Explanation:

If you carefully observe the given function,

It just swaps the adjacent values for every pair till it reaches the end.

The modified linked list is 2->1->4->3->6->5->7

See Question 4 of https://www.geeksforgeeks.org/data-structures-and-algorithms-set-15/

This solution is contributed by Anil Saikrishna Devarasetty

Quiz of this Question

My Personal Notes arrow_drop_up