Related Articles
GATE | Gate IT 2005 | Question 54
• Last Updated : 28 Dec, 2015

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; ` `    ``} ` `} `

(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 