棧· 用一個棧實現另一個棧的排序
阿新 • • 發佈:2019-05-09
tro ron 新的 help 結束 pre stack 壓入 元素
題面
用一個棧實現另外一個棧的頂到底降序排序
要求:不能使用額外的數據結構,但可以使用新的變量。
思路(給定棧s, 輔助棧help)
1. 遍歷給定棧(出棧),棧頂出棧cur,與help棧頂比較,如果大於輔助棧頂元素值,那麽輔助棧棧頂元素出棧至s棧,直到help棧頂元素值<=cur
2. help壓入cur
2. s棧空時,排序結束,help棧元素出棧至s棧,排序結束。
(如果要求升序,那麽只要將大小比較符號改反即可)
1 void sort(stack<int> &s) 2 { 3 stack<int> help;4 while (!s.empty()) 5 { 6 int cur = s.top(); 7 s.pop(); 8 while (!help.empty() && cur > help.top())//如果要求從頂到底升序,改成 < 即可 9 { 10 int tmp = help.top(); 11 s.push(tmp); 12 help.pop(); 13 } 14 help.push(cur);15 } 16 while (!help.empty()) 17 { 18 int a = help.top(); 19 s.push(a); 20 help.pop(); 21 } 22 }
棧· 用一個棧實現另一個棧的排序