Skip to content
Related Articles

Related Articles

GATE | GATE CS 2021 | Set 2 | Question 45
  • Last Updated : 15 Apr, 2021

Consider the following ANSI C program:

#include <stdio.h>
#include <stdlib.h>
struct Node{
        int value;
        struct Node *next;};
int main( ) {
    struct Node *boxE, *head, *boxN; int index=0;
    boxE=head= (struct Node *) malloc(sizeof(struct Node));
    head → value = index;
    for (index =1; index<=3; index++){
        boxN = (struct Node *) malloc (sizeof(struct Node));
        boxE → next = boxN;
        boxN → value = index;
        boxE = boxN; }
for (index=0; index<=3; index++) {
    printf(“Value at index %d is %d\n”, index, head → value);
    head = head → next;
    printf(“Value at index %d is %d\n”, index+1, head → value); } } 

Which one of the following statements below is correct about the program?
(A) Upon execution, the program creates a linked-list of five nodes
(B) Upon execution, the program goes into an infinite loop
(C) It has a missing return which will be reported as an error by the compiler
(D) It dereferences an uninitialized pointer that may result in a run-time error


Answer: (D)

Explanation:

When you debug loop 1 you will get the linked list of size 4 

In the second loop value will be printed 0 0 1 1 2 2 3 3 after that head will be pointing to some random location and result in run-time error. 
Correct Option (D)


Quiz of this Question

My Personal Notes arrow_drop_up
Recommended Articles
Page :