#algorithm #data-structures #stack
#алгоритм #структуры данных #стек
Вопрос:
используя следующий алгоритм
Begin
Initialize Stacks S1,S2
Push all elements into Stack S1
Procedure P(){
While(!S1.isEmpty())
PushS2(PopS1())
}
While(!s2.isEmpty())
Print(popS2())
End
Затем он задает вопрос, для чего предназначен приведенный выше псевдокод?Что делает приведенный выше алгоритм работы.
Я понимаю, как работают стеки. И здесь все это распечатывает то же самое, что было задано в качестве входных данных.Если a,b,c,d,e
был введен, то он будет распечатан a,b,c,d,e
.
Представляет ли этот алгоритм что-нибудь существенное.Какая польза от написания такого рода?
Комментарии:
1. Что
P
делает определение процедуры в середине блока? Для меня это не имеет смысла. (Можно даже утверждать, что это был бы недопустимый синтаксис, даже в псевдокоде.) Это весь вопрос илиP
используется в другом месте?2. @Heuster Это был заданный алгоритм, и в этом весь вопрос
Ответ №1:
P()
выталкивает все из S1
в S2
, выталкивая все из S1
и S2
помещая в него, пока стек не станет пустым, а завершающий while
цикл печатает все в S2, пока оно не станет пустым… Это кажется довольно простым, если я чего-то не упускаю.
push()
добавляет элемент в стек.
pop()
возвращает верхний элемент из стека.
Комментарии:
1. : Я понимаю, что происходит . Я не знаю, какой ответ я должен дать на вопрос, для чего предназначен приведенный выше псевдокод? Что делает приведенный выше алгоритм работы.
2. @sam_rox скопируйте один стек в другой стек и распечатайте то, что находится в стеке… Это также изменит то, что находится в S1 … может быть, это то, что вы ищете
3. : Это не отменяется, как только s2 появляется правильно? В s2 мы имеем перевернутый стек. Но когда он выталкивается, он больше не отменяется
4. Ну, это зависит от того, как инициализируются числа S1 и S2, но да