乙個棧依次壓入1,2,3,4,5,那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現棧中元素的逆序,但是只能用遞迴函式來實現,不能用其他資料結構。
輸入描述:
輸入資料第一行乙個整數n為棧中元素的個數。
接下來一行n個整數x
ix_i
xi表示從棧頂依次到棧底的每個元素。
輸出描述:
輸出一行表示棧中元素逆序後的每個元素
示例1輸入
5
1 2 3 4 5
輸出5 4 3 2 1
題解:
這題比較煩人,如果只是為了過題的話,直接將輸入逆序輸出就行,但是題目要求只能遞迴,那行吧,開整。。。
我們需要兩個遞迴函式,乙個是獲取棧底元素並刪除的函式,乙個是逆序函式,也就是題目要求實現的函式。
具體的看**吧,倒來倒去的。。。
**:
#include
using
namespace std;
const
int n =
100010
;int stk[n]
;int top;
intgetandremovelastelement()
}void
reversestack()
intmain
(void
)
用遞迴函式和棧操作逆序棧
乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現了棧中元素的逆序,請設計乙個演算法實現逆序棧的操作,但是只能用遞迴函式來實現,而不能用另外的資料結構。給定乙個棧stack以及棧的大小top,請返回逆序後的棧。測試樣...
棧與佇列3 用遞迴和棧操作逆序乙個棧
乙個棧依次壓入1,2,3 此時棧頂到棧底元素分別為 3,2,1 將棧反轉,使得棧頂到棧底元素為 1,2,3,僅限遞迴函式,並且不能使用其他資料結構 使用兩個函式reverse和getandremovelastelement函式 詳細介紹reverse,reverse負責將棧逆序,通過getandre...
如何僅用遞迴函式和棧操作逆序乙個棧
題目 乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現棧中元素的逆序,但是只能用遞迴函式來實現,而不能用另外的資料結構。解答 本題考察棧的操作和遞迴函式的設計,我們需要設計出兩個遞迴函式。遞迴函式一 將棧stack...