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:
- 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 - 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
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