用乙個棧實現另乙個棧的排序

2021-08-10 00:00:31 字數 705 閱讀 8647

背景:

乙個棧的排序其實是很好做的,但是現在要你將該棧從頂到底從大到小排序,只允許申請乙個輔助棧,可以申請有限個變數,除此之外不能再申請額外的資料結構,你該怎麼搞?

演算法:

設要排序的棧為st,輔助棧為help,從st彈出的元素記為curhelp的棧頂元素記為top

一直執行上述操作,直到st為空結束,這時再把help中的元素一一壓回st就行了,演算法結束。

**:

#include 

using

namespace

std;

template

void sortstbyhelp(stack

&st)

for (; !help.empty(); st.push(help.top()), help.pop());

}int main()

); sortstbyhelp(st);

for (; !st.empty(); cout

<< st.top() << endl, st.pop());

return

0;}

棧 用乙個棧實現另乙個棧的排序

題面 用乙個棧實現另外乙個棧的頂到底降序排序 要求 不能使用額外的資料結構,但可以使用新的變數。思路 給定棧s,輔助棧help 1.遍歷給定棧 出棧 棧頂出棧cur,與help棧頂比較,如果大於輔助棧頂元素值,那麼輔助棧棧頂元素出棧至s棧,直到help棧頂元素值 cur 2.help壓入cur 2....

用乙個棧實現另乙個棧的排序

題目 乙個棧中元素型別為整型,想將該棧從頂到底按從大到小排序,只允許申請乙個棧。除此之外,可以申請新變數,但不能申請額外的資料結構。舉例 public static void main string args 用乙個棧實現另乙個棧的排序 public static void sortstack st...

用乙個棧實現另乙個棧的排序

思路 為了實現乙個棧的從大到小的排序 棧頂到棧底 需要考慮乙個事實,如果我們每次都往輔助棧中存放當前剩餘的最大的值,最後直到當前棧空了,再把輔助棧轉移回去就可以完成排序。關鍵 如何每次把當前的最大的值存入輔助棧。只要彈出乙個數,如果輔助棧為空,push,如果彈出值大於輔助棧頂,則彈出輔助棧直到遇到小...