码迷,mamicode.com
首页 > 其他好文 > 详细

用递归函数和栈操作逆序一个栈

时间:2015-08-17 13:35:23      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

  一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,而不能用另外的数据结构。

 

实现代码:

#include <stack>
#include <stdio.h>
using namespace std;

int GetAndRemoveBottom(stack<int> &ss)
{
    int top, bottom;
    top = ss.top();
    ss.pop();
    if(ss.empty())
        return top;
    bottom = GetAndRemoveBottom(ss);
    ss.push(top);
    return bottom;
}

void ReverseStack(stack<int> &ss)
{
    if(ss.empty()) return ;
    int bottom = GetAndRemoveBottom(ss);
    ReverseStack(ss);
    ss.push(bottom);
}

int main()
{
    stack<int> ss;
    for(int i = 1; i <= 5; i++)
        ss.push(i);
    ReverseStack(ss);
    while(!ss.empty())
    {
        printf("%d ", ss.top());
        ss.pop();
    }
}

 

用递归函数和栈操作逆序一个栈

标签:

原文地址:http://www.cnblogs.com/1203ljh/p/4736166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!