Skip to content
Related Articles

Related Articles

GATE | GATE-CS-2017 (Set 1) | Question 30

Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 13 Aug, 2021
Improve Article
Save Article

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
(A) append list m to the end of list n for all inputs
(B) either cause a null pointer dereference or append list m to the end of list n
(C) cause a null pointer dereference for all inputs.
(D) append list n to the end of list m for all inputs.

Answer: (B)

Explanation: As it is stated in the question, that m and n are valid Lists but not explicitly specified if the lists are empty or not. We can have two cases:

  1. Case 1: If lists are not NULL : Invocation of join will append list m to the end of list n if the lists are not NULL. For Example:Before join operation :
    m =1->2->3->4->5->null
    n =6->7->8->9->nullAfter join operation :
  2. Case 2: If lists are NULL : If the list n is empty and itself NULL, then joining and referencing would obviously create NULL pointer issue.

Therefore option B is correct

Quiz of this Question

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!