Глядя на некоторые алгоритмы в сети, я нашел интересный:
Как бы вы реализовали FIFO с использованием LIFO?
Я попробовал себя, но в итоге получил только одинРешение: каждый раз, когда нам нужен элемент front в FIFO, копируйте лифо в другой lifo ( исключая последний элемент, который является передним), достаете передний элемент и удаляйте егозатем скопируйте обратно второй LIFO в первый LIFO.
Но это, конечно, очень медленно, это делает простой цикл вроде этого:
for(!myfifo.empty()) {
myfifo.pop();
}
собирается O (n²) вместо O (n) в стандартной реализации FIFO.
Конечно, LIFO не созданы для FIFO, и у нас точно не будет такой же сложности.использование "родного" FIFO и поддельного FIFO на основе LIFO, но я думаю, что, безусловно, есть способ добиться большего успеха, чем O (n²).У кого-нибудь есть идеи по этому поводу?
Заранее спасибо.