Можем ли мы использовать yield для реализации очереди с использованием одного стека в C#

В одном из интервью меня попросили реализовать очередь с использованием одного стека, и я смог это сделать, но мне было интересно, можно ли добиться того же с помощью yield?

1 ответ

Решение

Основываясь на комментариях выше, я бы сказал, нет, невозможно использовать один стек и доходность для этого.

Как заявил ОП, он использовал рекурсию, чтобы инвертировать стек (получить дно). Таким образом, это в основном то же самое, что дается в качестве решения в вопросах, требующих реализации очереди с использованием двух стеков: Как реализовать очередь с использованием двух стеков? потому что стек времени выполнения используется в качестве второго стека.

Несмотря на то, что всегда можно переписать рекурсивный метод, чтобы использовать вместо него итерацию (см. Любые книги по теоретической информатике), это как раз то, что запрещено для решения этой задачи, потому что для сохранения этой структуры потребуется другая структура данных того же размера. данные. Нам нужно использовать итерацию, чтобы иметь возможность использовать yield.

Другие вопросы по тегам