棧與佇列3 用遞迴和棧操作逆序乙個棧

2021-10-01 18:42:02 字數 637 閱讀 7407

乙個棧依次壓入1,2,3;此時棧頂到棧底元素分別為:3,2,1;將棧反轉,使得棧頂到棧底元素為:1,2,3,僅限遞迴函式,並且不能使用其他資料結構

使用兩個函式reverse和getandremovelastelement函式

詳細介紹reverse,reverse負責將棧逆序,通過getandremovelastelement每次可獲得當前棧的棧底元素,並且當前棧已經將棧底元素去除掉,通過自身遞迴,直至棧為空位置,將之前每一輪獲得的棧底元素不斷地壓棧來實現逆序

詳細介紹getandremovelastelement,該函式主要實現彈出棧底元素;核心在於,每一輪pop棧頂元素,自身遞迴,棧空時,返回棧底的元素,但是並不將棧底元素壓棧,因為是if-else的邏輯關係,原始碼的else中push的是當前輪的result,舉個例子:如果當前棧中的元素是2,1(棧頂到棧底)

public int getandremovelastelement(stackstack)else

}public void reverse(stackstack)

int i =getandremovelastelement(stack);

reverse(stack);

stack.push(i);

}

用遞迴函式和棧操作逆序棧

乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現了棧中元素的逆序,請設計乙個演算法實現逆序棧的操作,但是只能用遞迴函式來實現,而不能用另外的資料結構。給定乙個棧stack以及棧的大小top,請返回逆序後的棧。測試樣...

用遞迴操作逆序棧 遞迴

乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現了棧中元素的逆序,請設計乙個演算法實現逆序棧的操作,但是只能用遞迴函式來實現,而不能用另外的資料結構。給定棧的大小n和乙個棧stack,請返回逆序後的棧。測試樣例 5...

棧與佇列03 如何僅用遞迴函式和棧操作逆序乙個棧

題目 乙個棧一次壓入1 2 3 4 5,那麼從棧頂到棧底分別是5 4 3 2 1。將這個棧轉置後,從棧頂到棧底為1 2 3 4 5,也就是實現棧中元素的逆序,但是只能用遞迴函式來實現,不能用其他資料結構。解答 遞迴函式一 將棧stack的棧底元素返回並移除。具體過程見 實現1 include sta...