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