乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現了棧中元素的逆序,請設計乙個演算法實現逆序棧的操作,但是只能用遞迴函式來實現,而不能用另外的資料結構。
給定乙個棧stack以及棧的大小top,請返回逆序後的棧。
測試樣例:
[1,2,3,4,5],5
返回:[5,4,3,2,1]
class reversestack {
public:
int level = 0;
vectorreversestackrecursively(vectorstack, int top) {
// write code here
if(top > 0){
int val = stack[top - 1];
++level;
stack = reversestackrecursively(stack, top - 1);
--level;
stack[level] = val;
return stack;
另一種:
classstackreverse{
public:
vectorreversestack(vectora,int n)
stacksta;
int i;
for(i=n-1;i>=0;i--)
sta.push(a[i]);
revstack(sta);
vectorres;
while(!sta.empty())
res.push_back(sta.top());
sta.pop();
return res;
void revstack(stack&a)
if(a.empty())
return;
int res1=get(a);
revstack(a);
a.push(res1);
intget(stack&a)
if(a.empty())
exit(-1);
int res1=a.top();
a.pop();
if(a.empty())
return res1;
else
int res2=get(a);
a.push(res1);
return res2;
用遞迴操作逆序棧 遞迴
乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現了棧中元素的逆序,請設計乙個演算法實現逆序棧的操作,但是只能用遞迴函式來實現,而不能用另外的資料結構。給定棧的大小n和乙個棧stack,請返回逆序後的棧。測試樣例 5...
用遞迴函式和棧逆序乙個棧
乙個棧依次壓入1,2,3,4,5,那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現棧中元素的逆序,但是只能用遞迴函式來實現,不能用其他資料結構。輸入描述 輸入資料第一行乙個整數n為棧中元素的個數。接下來一行n個整數x ix i xi 表示從棧頂依...
棧與佇列3 用遞迴和棧操作逆序乙個棧
乙個棧依次壓入1,2,3 此時棧頂到棧底元素分別為 3,2,1 將棧反轉,使得棧頂到棧底元素為 1,2,3,僅限遞迴函式,並且不能使用其他資料結構 使用兩個函式reverse和getandremovelastelement函式 詳細介紹reverse,reverse負責將棧逆序,通過getandre...