3 6雙棧排序

2022-02-03 07:01:54 字數 807 閱讀 4180

請編寫乙個程式,按公升序對棧進行排序(即最大元素位於棧頂),要求最多只能使用乙個額外的棧存放臨時資料,但不得將元素複製到別的資料結構中。

給定乙個intnumbers(c++中為vector),其中第乙個元素為棧頂,請返回排序後的棧。請注意這是乙個棧,意味著排序過程中你只能訪問到第乙個元素。

測試樣例:

[1,2,3,4,5]
返回:[5,4,3,2,1]

學習總結:1.棧的使用判斷是否為空用empty()函式

2.棧和向量的轉換,棧只能訪問到棧頂元素。push有引數,pop無引數。

3.雙棧排序的使用技巧,先比棧頂,一次排完後保持臨時棧底元素最小。

class

twostacks

val =num.top();

temp.push(val);

num.pop();

while(!num.empty())

temp.push(val);

//比較值進行入臨時棧

}

else

}//最後返回的向量形式,所以進行轉換

for(int j = 0; j < numbers.size(); j++)

return

numbers; }};

1002 雙棧排序

description tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1和s2,tom希望借助以下4種操作實現將輸入序列公升序排序。操作a 如果輸入序列不為空,將第乙個元素壓入棧s1 操作b 如果棧s1不為空,將s1棧頂元素彈出至輸出序列 操作c 如果輸入序列不為空,將第乙個元素壓入棧s...

雙棧排序練習

題目 請編寫乙個程式,按公升序對棧進行排序 即最大元素位於棧頂 要求最多只能使用乙個額外的棧存放臨時資料,但不得將元素複製到別的資料結構中。給定乙個int numbers c 中為vector 其中第乙個元素為棧頂,請返回排序後的棧。請注意這是乙個棧,意味著排序過程中你只能訪問到第乙個元素。解題思路...

nowcoder 雙棧排序

請編寫乙個程式,按公升序對棧進行排序 即最大元素位於棧頂 要求最多只能使用乙個額外的棧存放臨時資料,但不得將元素複製到別的資料結構中。給定乙個int numbers c 中為vector 其中第乙個元素為棧頂,請返回排序後的棧。請注意這是乙個棧,意味著排序過程中你只能訪問到第乙個元素。測試樣例 1,...