PUERTA | GATE-CS-2017 (Conjunto 1) | Pregunta 30

Considere el fragmento de código C que se proporciona a continuación.

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

Suponiendo que m y n apuntan a listas enlazadas terminadas en NULL válidas, la invocación de join
(A) agregará la lista m al final de la lista n para todas las entradas
(B) provocará una desreferencia de puntero nulo o agregará la lista m al final de list n
(C) causa una desreferencia de puntero nulo para todas las entradas.
(D) agregue la lista n al final de la lista m para todas las entradas.

Respuesta: (B)
Explicación: Como se indica en la pregunta, m y n son Listas válidas pero no se especifica explícitamente si las listas están vacías o no. Podemos tener dos casos:

  1. Caso 1: si las listas no son NULL: la invocación de unión agregará la lista m al final de la lista n si las listas no son NULL. Por ejemplo: antes de la operación de unión:
    m =1->2->3->4->5->null
    n =6->7->8->9->nullDespués de la operación de unión:
    6->7->8 ->9->1->2->3->4->5->nulo
  2. Caso 2: si las listas son NULL:  si la lista n está vacía y es NULL, entonces unirse y hacer referencia obviamente crearía un problema de puntero NULL.

Por lo tanto la opción B es correcta

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *