Рубрики

ВОРОТА | GATE CS 2010 | Вопрос 36

Следующая функция C принимает просто связанный список в качестве входного аргумента. Он изменяет список, перемещая последний элемент в начало списка и возвращает измененный список. Некоторая часть кода оставлена пустой.

typedef struct node 

{

  int value;

  struct node *next;

}Node;

   
Node *move_to_front(Node *head) 
{

  Node *p, *q;

  if ((head == NULL: || (head->next == NULL)) 

    return head;

  q = NULL; p = head;

  while (p-> next !=NULL) 

  {

    q = p;

    p = p->next;

  }

  _______________________________

  return head;

}

Выберите правильный вариант, чтобы заменить пустую строку.
(A) q = NULL; р-> следующий = голова; голова = р;
(B) q-> next = NULL; голова = р; р-> следующий = голова;
(С) голова = р; p-> next = q; q-> next = NULL;
(D) q-> next = NULL; р-> следующий = голова; голова = р;

Ответ: (D)
Объяснение: Когда цикл while заканчивается, q содержит адрес второго последнего узла, а p содержит адрес последнего узла. Таким образом, мы должны сделать следующие вещи после цикла while.
я) Установите следующий из q как NULL (q-> next = NULL).
ii) Установите следующее из p в качестве заголовка (p-> next = head).
iii) Сделать голову как р (голова = р)
Шаг (ii) должен быть выполнен до шага (iii). Если мы сначала изменим заголовок, то мы потеряем след узла заголовка в исходном связанном списке.
См. Http://espressocode.top/move-last-element-to-front-of-a-given-linked-list/ для получения более подробной информации.
Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE CS 2010 | Вопрос 36

0.00 (0%) 0 votes