[英]How to reverse a Deque using stack?
這是我的代碼:-
stack <int> intStack;
while (!adaqueue.empty())
{
intStack.push(adaqueue.front());
adaqueue.pop_front();
}
while (!intStack.empty())
{
adaqueue.push_front(intStack.top());
intStack.pop();
}
它沒有給出正確的輸出。 比如說,12 和 45 分別是雙端隊列中的項目。 如果我使用上面的代碼來反轉雙端隊列,它會給出錯誤的輸出。 如果我嘗試打印前面的項目,它會給我 12 而不是 45。我的代碼的潛在錯誤是什么? NB C++ 語言的代碼。
您在這里要做的是,在第二個 while 循環中,您要從堆棧中刪除頂部,然后將其添加到隊列的后面。 這樣你就可以顛倒順序。 試着在紙上勾勒出來。 這將有助於形象化它。
隊列初始狀態(1為前):
{1,2,3,4,5}
將其添加到堆棧后(5 是頂部):
{5,4,3,2,1}
然后在從棧頂取出並添加到隊列的后面后,我們保持相同的順序(5):
S {5,4,3,2,1}
Q {}
S {4,3,2,1}
Q {5}
S {3,2,1}
Q {5,4}
S {2,1}
Q {5,4,3}
等等。 最后我們顛倒了隊列:
S {}
Q {5,4,3,2,1}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.