顛倒棧中元素 棧的逆置

2021-06-18 12:45:14 字數 787 閱讀 8928

思路:1.使用遞迴pop出棧中元素,直到棧中元素只剩下乙個元素

2.當前第一次遞迴返回的時候,棧中有2個元素,我們再利用另乙個遞迴函式putitem把兩個元素逆置

3.以此遞迴下去,直到棧中元素全部逆置。

過程如下

1)1 , 2, 3, 4 第乙個遞迴不斷出棧,第一次滿足返回條件時,棧中元素只有 1

2)回到第乙個遞迴的上一層,利用putitem把 2 壓入棧中,當putitem返回時,棧中元素為 2 1

3)繼續回到第乙個遞迴的上一層,利用putitem把 3 壓入棧中,當putitem返回時,棧中元素為 3 2 1

4)繼續回到第乙個遞迴的上一層,利用putitem把 4 壓入棧中,當putitem返回時,棧中元素為 4 3 2 1

5)至此遞迴結束

#include #include using namespace std;

stackst;

void putitem(stack&st, int data)

int tmp = st.top();

st.pop();

putitem(st, data);

st.push(tmp);

}void reversestack(stack&st)

int tmp = st.top();

st.pop();

reversestack(st);

putitem(st, tmp);

}int main()

return 0;

}

用佇列將棧中元素逆置

程式設計實現利用佇列將棧中元素逆置的演算法。void inverse stack s,queue q while isempty q include include define true 1 define false 0 define n 100 typedef int bool typedef ...

棧中元素排序

棧中元素排序 題目 乙個棧中元素型別為整型,現在想將棧頂到棧底從大到小排序。要求 只能申請乙個棧,但可以申請新的變數,不能申請額外的資料結構,如何完成排序。解析 將要排序的棧記為s,申請的輔助棧記為t,在棧s上執行pop操作,彈出的元素為cur,每次彈出乙個元素時,分兩種情況 情況一 如果cur小於...

棧中元素排序

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