【說明】:
本文是左程雲老師所著的《程式設計師面試**指南》第一章中「用乙個棧實現另乙個棧的排序」這一題目的c++復現。
感謝左程雲老師的支援。
【題目】:
乙個棧中元素的型別為整形,現在想將該棧從頂到底按從大到小的順序排序,只許申請乙個棧。除此之外,可以申請新的變數,但不能申請額外的資料結構。如何完成排序?
【思路】:
不知到大家有木有玩過九連環,感覺解題思路相當類似;這個解法和插入排序也有一定的類似度。
【編譯環境】:
centos6.7(x86_64)
gcc 4.4.7
【實現】:
實現及測試**
/*view code*檔名:sortstack.cpp
*摘要:用乙個棧實現另乙個棧的逆序 */
#include
#include
using
namespace
std;
void sortstack(stack &s)
auxs.push(tmp);
}while(!auxs.empty())
}int
main()
; stack
s;inti;
for(i=0;i<6;i++)
cout
<< "
the datum of the stack before sorting are:
"<
for(i=0;i<6;i++)
for(i=0;i<6;i++)
cout
<< "
the datum of the stack after sorting are:
"<
sortstack(s);
for(i=0;i<6;i++)
return0;
}
注:
棧 用乙個棧實現另乙個棧的排序
題面 用乙個棧實現另外乙個棧的頂到底降序排序 要求 不能使用額外的資料結構,但可以使用新的變數。思路 給定棧s,輔助棧help 1.遍歷給定棧 出棧 棧頂出棧cur,與help棧頂比較,如果大於輔助棧頂元素值,那麼輔助棧棧頂元素出棧至s棧,直到help棧頂元素值 cur 2.help壓入cur 2....
用乙個棧實現另乙個棧的排序
背景 乙個棧的排序其實是很好做的,但是現在要你將該棧從頂到底從大到小排序,只允許申請乙個輔助棧,可以申請有限個變數,除此之外不能再申請額外的資料結構,你該怎麼搞?演算法 設要排序的棧為st,輔助棧為help,從st彈出的元素記為cur,help的棧頂元素記為top。一直執行上述操作,直到st為空結束...
用乙個棧實現另乙個棧的排序
題目 乙個棧中元素型別為整型,想將該棧從頂到底按從大到小排序,只允許申請乙個棧。除此之外,可以申請新變數,但不能申請額外的資料結構。舉例 public static void main string args 用乙個棧實現另乙個棧的排序 public static void sortstack st...