C++使用递归函数和栈操作逆序一个栈的算法示例

2025-05-27 0 54

本文实例讲述了C++使用递归函数操作逆序一个的算法。分享给大家供大家参考,具体如下:

题目:

一个依次压入1、2、3、4、5,那么顶到底分别为:5、4、3、2、1。
将这个逆置后顶到底分别为1、2、3、4、5。
递归函数来实现,不能用其他数据结构。

解题思路及代码

1、递归函数一:将底元素一个个返回并移除。
2、递归函数二:逆序,调用递归函数一实现。

C++实现:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
class Solution

{

public:

//递归函数一

static int getAndRemoveStackLastElem(stack<int>& s)

{

int result = s.top();

s.pop();

if (s.empty())

return result;

else

{

int last = getAndRemoveStackLastElem(s);

s.push(result);

return last;

}

}

//递归函数二

static void reverseStack(stack<int>& s)

{

if (s.empty())

return;

int i = getAndRemoveStackLastElem(s);

reverseStack(s);

s.push(i);

}

};

程序测试用例:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54
#include <iostream>

#include <stack>

using namespace std;

class Solution

{

public:

static int getAndRemoveStackLastElem(stack<int>& s)

{

int result = s.top();

s.pop();

if (s.empty())

return result;

else

{

int last = getAndRemoveStackLastElem(s);

s.push(result);

return last;

}

}

static void reverseStack(stack<int>& s)

{

if (s.empty())

return;

int i = getAndRemoveStackLastElem(s);

reverseStack(s);

s.push(i);

}

};

//打印栈

void show(stack<int> s)

{

while (!s.empty())

{

cout << s.top() << " ";

s.pop();

}

cout << endl;

}

int main()

{

stack<int> s;

s.push(1);

s.push(2);

s.push(3);

s.push(4);

s.push(5);

s.push(6);

cout << "Before reverse: " << endl;

show(s);

cout << "After reverse: " << endl;

Solution::reverseStack(s);

show(s);

system("pause");

}

运行结果:

?

1

2

3

4

5
Before reverse:

6 5 4 3 2 1

After reverse:

1 2 3 4 5 6

请按任意键继续. . .

希望本文所述对大家C++程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C++使用递归函数和栈操作逆序一个栈的算法示例 https://www.kuaiidc.com/73831.html

相关文章

发表评论
暂无评论