棧中元素排序

2021-08-08 09:14:58 字數 544 閱讀 6210

棧中元素排序:

題目:乙個棧中元素型別為整型,現在想將棧頂到棧底從大到小排序。要求:只能申請乙個棧,但可以申請新的變數,不能申請額外的資料結構,如何完成排序。

解析:將要排序的棧記為s,申請的輔助棧記為t,在棧s上執行pop操作,彈出的元素為cur,每次彈出乙個元素時,分兩種情況:

情況一:如果cur小於或等於t中的棧頂元素,則將cur元素直接壓入棧t中。

情況二:如果cur大於t中的棧頂元素,則將t的棧頂元素彈出,逐一壓入s中,直到cur小於或等於t的棧頂元素為止,再將cur壓入t中。

一直執行以上操作,直到s中的全部元素都壓入到t中,最後將t中的元素逐一壓入s中,即完成排序。**如下:

#include #include #include #include using namespace std;

void sortstack(stack& s)

tmp.push(top);

} while (!tmp.empty()) }

int main(void)

棧中元素排序

題目描述 設計乙個演算法,將棧中的元素按公升序排列。可另外借用乙個棧來實現。思路 從主棧中依次彈出棧頂元素壓入輔助棧,每當將要壓入的元素使得輔助棧中的元素不是公升序排列,就將輔助棧裡的元素重新壓入原始棧,直到輔助棧裡的元素都小於當前要壓入的元素,然後再壓入當前元素。假設當前主棧裡的元素是。過程 如下...

顛倒棧中元素 棧的逆置

思路 1.使用遞迴pop出棧中元素,直到棧中元素只剩下乙個元素 2.當前第一次遞迴返回的時候,棧中有2個元素,我們再利用另乙個遞迴函式putitem把兩個元素逆置 3.以此遞迴下去,直到棧中元素全部逆置。過程如下 1 1 2,3,4 第乙個遞迴不斷出棧,第一次滿足返回條件時,棧中元素只有 1 2 回...

js中map中元素排序

方法如下 function sort var keys 1 2 3 4 var result map max 999999999 存放每一次拍完序後的,該過程中產生的最大的元素。for var i 0 iif temp map keys k result i temp map max temp co...