StreakPeaked· Practice

ExamsGATETechnical

The following C function takes a singly-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; } }

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

Correct answer: 2,1,4,3,6,5,7

Solution

The function swaps the values of each pair of nodes in the linked list. Starting with the first two nodes, it swaps their values, then moves to the next pair, continuing this process until it reaches the end of the list. As a result, the original list 1,2,3,4,5,6,7 is transformed into 2,1,4,3,6,5,7.

Related GATE Technical questions

⚔️ Practice GATE Technical free + battle 1v1 →