# Data Structures | Linked List | Question 8

• Difficulty Level : Hard
• Last Updated : 28 Jun, 2021

The following  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?

## Java

 `class` `Node {``    ``int` `value;``    ``Node next;``}` `void` `rearrange(Node list) {``    ``Node p, q;``    ``int` `temp;``    ``if` `(list == ``null` `|| list.next == ``null``) {``        ``return``;``    ``}``    ``p = list;``    ``q = list.next;``    ``while` `(q != ``null``) {``        ``temp = p.value;``        ``p.value = q.value;``        ``q.value = temp;``        ``p = q.next;``        ``q = p != ``null` `? p.next : ``null``;``    ``}``}`

(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:

The function rearrange() exchanges data of every node with its next node. It starts exchanging data from the first node itself.
For eg. 3,5,7,9,11