Во время выполнения я хочу ввести два типа данных: double и string.Одним из условий является то, что String должен отображаться в порядке ввода, а double - как обычное поведение стека LIFO.Другое условие состоит в том, что размер стека ограничен 10
Например, один пример времени выполнения
Вход Hello 1 World 2 blah blah 3 4 5
Выход Hello 5 World 4 blah blah 3 2 1
Мой первый вопрос: сколько способов решить эту проблему?Я решил эту проблему, используя 3 стека, один из которых хранит double, другой - строки, а другой используется для изменения порядка строк.
Мне нужно сохранить шаблон, чтобы программа знала, какой порядок удваиваетсяприходит, поэтому я сохраняю шаблон в стеке строк.Поскольку размер стека ограничен размером 10, мне нужно сохранить шаблон другим способом.
Так вот как будет выглядеть мой стек строк после нажатия
- Hello *
- World *
- бла
- бла ***
Так что при первом чтении мне нужно сделать конкретное чтение в этой позиции стекаи просто извлеките Hello из этого.Звездочка * оставлена для дальнейшего использования, когда я сообщаю программе, что следующий всплывающий список имеет двойное значение.
Мой второй вопрос заключается в том, что мне интересно, есть ли какое-то другое более элегантное решение этой проблемы.Поскольку мое решение будет включать в себя некоторые манипуляции со строками, чтобы решить эту проблему.И на данный момент я на самом деле не использую функцию pop в случае строки, как это предполагается использовать.Я сделал решение в C ++, кстати.