GATE 2017 CS – Question 18
Consider the C code fragment given below.
typedef struct node {
int data;
node* next;
} node;
void join(node* m, node* n) {
node* p = n;
while (p->next != NULL) {
p = p->next;
}
p->next = m;
}Assuming that `m` and `n` point to valid NULL-terminated linked lists, invocation of `join` will
Practise this question in The GATE Grind →
Show answer and explanation
Correct answer: (B) either cause a null pointer dereference or append list `m` to the end of list `n`.
Explanation
The function walks `p` to the last node of `n` and then links it to `m`, which appends `m` to `n`. If `n` is an empty list, `n` is NULL, so `p->next` dereferences a null pointer. So it either appends `m` to `n` or crashes.