題目:
一個棧中的類型爲整形,現在想將該棧從頂到底按從小到大的順序排序,只允許申請一個棧 除此之外,可以申請新的變量,但是不能申請額外的數據結構,如何完成排序。
思路:
設計一個cur變量,存放stack棧彈出的當前元素,和輔助棧help的棧頂元素進行比較,若大於輔助棧棧頂元素,則將輔助棧中元素一一彈出,壓入stack棧中,若小於輔助棧棧頂元素,則將cur壓入輔助棧中,知道stack棧爲空,再將輔助棧一一彈出壓入stack棧中,排序完成。
public class test1 { public void sortStack() { Stack<Integer> help = new Stack<>(); Stack<Integer> stack = new Stack<>(); while (!stack.isEmpty()) { int cur = stack.pop(); while (!help.isEmpty() && cur > help.peek()) { stack.push(help.pop()); } help.push(cur); while (!help.isEmpty()){ stack.push(help.pop()); } } } }