PUERTA | PUERTA CS 2008 | Pregunta 62

La siguiente función de C toma una lista de enteros con un solo enlace como parámetro y reorganiza los elementos de la lista. La función se llama con la lista que contiene los números enteros 1, 2, 3, 4, 5, 6, 7 en el orden dado. ¿Cuál será el contenido de la lista después de que la función complete su ejecución?

struct node
{
  int value;
  struct node *next;
};
void rearrange(struct node *list)
{
  struct node *p, * q;
  int temp;
  if ((!list) || !list->next)
      return;
  p = list;
  q = list->next;
  while(q)
  {
     temp = p->value;
     p->value = q->value;
     q->value = temp;
     p = q->next;
     q = p?p->next:0;
  }
}

(A) 1,2,3,4,5,6,7
(B) 2,1,4,3,6,5,7
(C) 1,3,2,5,4,7,6
(D ) 2,3,4,5,6,7,1

Respuesta: (B)
Explicación:

La lista enlazada dada es 1->2->3->4->5->6->7

Si observas cuidadosamente la función dada,

Simplemente intercambia los valores adyacentes para cada par hasta que llega al final.

La lista enlazada modificada es 2->1->4->3->6->5->7

Consulte la pregunta 4 de https://www.geeksforgeeks.org/data-structures-and-algorithms-set-15/

Esta solución es aportada por Anil Saikrishna Devarasetty
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 *