# Data Structures | Linked List | Question 8

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**Answer:** **(B)****Explanation:** The function rearrange() exchanges data of every node with its next node. It starts exchanging data from the first node itself.

Quiz of this Question