只用乙個函式實現翻轉棧

2021-09-14 00:01:15 字數 562 閱讀 5964

給你乙個棧,請翻轉棧裡的元素.

1,只能在函式裡定義常數級別的變數.

2,不用考慮複雜度,指數級,階乘級複雜度都可以接受

3,除了基礎的主函式以及輸入外,關於演算法邏輯的函式只能用下面介面

函式介面為:

void reverse(stack< int >& st)

int a=st.top();

st.pop();

if(st.empty())

else if(st.size()==1) else

}int main()

reverse(mystack);

while (!mystack.empty()){ //輸出

int a=mystack.top();

mystack.pop();

cout《最近在學演算法設計的遞迴,這道題卡了好幾天。。。。。

一開始想的是怎麼把棧底的元素取出來,然後再遞迴,但是再呼叫時函式已經變了,後來終於想明白了。

首先取出棧頂元素,對剩下的元素翻轉,再取出棧頂,對剩下翻轉,例:

希望這篇文章能對你有所幫助

如何只用乙個陣列來實現三個棧

int stackpointer 用於追蹤棧頂元素的指標 void push int stacknum,int value throws exception 棧指標自增,然後更新棧頂元素的值 stackpointer stacknum buffer abstopofstack stacknum va...

描述如何只用乙個陣列來實現三個棧

int stackpointer 用於追蹤棧頂元素的指標 void push int stacknum,int value throws exception 棧指標自增,然後更新棧頂元素的值 stackpointer stacknum buffer abstopofstack stacknum va...

鎖定程序只用乙個CPU

昨天除錯osg程式的時候很鬱悶啊,好像是osg有一些bug,我那個程式如果在多個cpu上執行的話就會出現一些莫名其妙的問題。我想可能是執行緒爭用的問題。我在任務管理器裡面將程式設定為只使用乙個cpu,問題就解決了,很奇怪。現在還沒有時間找什麼原因引起的,而每次除錯都要去設定cpu關係很麻煩。只好寫了...