The GATE Grind

GATE 2025 CS (CS1) – Question 62

Programming and Data Structures · Linked Lists · 2 marks · Numerical answer

Let LIST be a datatype for an implementation of linked list defined as follows:

typedef struct list {
    int data;
    struct list *next;
} LIST;

Suppose a program has created two linked lists, L1 and L2, whose contents are given below (code for creating L1 and L2 is not provided here). L1 contains 9 nodes, and L2 contains 7 nodes.
L1: 1 -> 7 -> 12 -> 3 -> 9 -> 5 -> 11 -> 15 -> 8
L2: 1 -> 11 -> 6 -> 9 -> 15 -> 12 -> 4

Consider the following C program segment that modifies the list L1. The number of nodes that will be there in L1 after the execution of the code segment is ________ . (Answer in integer)

int find (int query, LIST *list) {
    while (list != NULL){
        if(list->data == query) return 1;
        list = list->next;
    }
    return 0;
}
int main () {
    ...
    ptr1=L1; ptr2=L2;
    while (ptr1->next != NULL){
        query = ptr1->next->data;
        if (find (query, L2))
            ptr1->next = ptr1->next->next;
        else ptr1 = ptr1->next;
    }
    ...
    return 0;
}

Practise this question in The GATE Grind →

Show answer and explanation

Correct answer: 5

Explanation

The code deletes every node after the head whose value appears in L2. The head (1) is never tested. Among 7,12,3,9,5,11,15,8 the values 12, 9, 11 and 15 are in L2 and are removed, leaving 9-4 = 5 nodes.