Рубрики

ВОРОТА | Gate IT 2007 | Вопрос 30

Предположим, вам дана реализация очереди целых чисел. Операции, которые могут быть выполнены в очереди:

я. isEmpty (Q) — возвращает true, если очередь пуста, иначе false.

II. delete (Q) — удаляет элемент в начале очереди и возвращает его значение.

III. insert (Q, i) — вставляет целое число i в конец очереди.

Рассмотрим следующую функцию:

void f (queue Q) {

int i ;

if (!isEmpty(Q)) {

   i = delete(Q);

   f(Q);

   insert(Q, i);

  }

}

Какую операцию выполняет вышеуказанная функция f?
(A) Оставляет очередь Q без изменений
(B) Меняет порядок элементов в очереди Q
(C) Удаляет элемент в начале очереди Q и вставляет его сзади, сохраняя остальные элементы в том же порядке.
(D) Опорожняет очередь Q

Ответ: (Б)
Объяснение: Поскольку это рекурсивный вызов и удаление с фронта при вставке с конца, это означает, что последний элемент будет удален, наконец, и будет вставлен 1- й в новой очереди. И так будет продолжаться до тех пор, пока первый вызов не выполнит функцию вставки (Q, i).
Итак, очередь будет наоборот.

Тест на этот вопрос

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

ВОРОТА | Gate IT 2007 | Вопрос 30

0.00 (0%) 0 votes