美文网首页
递归模拟栈

递归模拟栈

作者: AwesomeAshe | 来源:发表于2016-04-03 11:59 被阅读313次

    之前写过一个栈模拟递归
    那个题是不让用递归(话说我有次笔试也是不让用递归)

    简单的介绍一下,递归本质是一个栈结构,不断的调用自身。

    而栈的大小是有限的,所以如果递归的层数太多,可能会栈溢出。

    好了题目是这样的:

    逆序输出一个单向链表

    首先,用几个游标是不能达到效果的;当然也可以先逆转链表的方向。。这样略复杂,并且会改变现有的链表,或者使用额外内存。

    也可以用一个栈,push进去再pop,这样也会占用内存。
    (不过也是不错的)

    那还有一种方法呢,就是用递归,和树一样,后序输出就行了;
    后序输出就是,在递归调用完了,执行后面的语句的时候,打印出来。

    其实这就很像一个栈的功能了。

    代码:

    void reversePrint(listNode* l)
    {
        if(!l)
            return;
        if(l->next)
            {
                reversePrint(l->next);
            }
        std::cout<<l->data;
    }
    

    文章参考何海涛大神文章

    相关文章

      网友评论

          本文标题:递归模拟栈

          本文链接:https://www.haomeiwen.com/subject/yvlulttx.html