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

2021-10-01 03:24:49 字數 1235 閱讀 8741

乙個棧依次壓入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...