递归模拟栈

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

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

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

好了题目是这样的:

逆序输出一个单向链表

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

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

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

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

代码:

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

文章参考何海涛大神文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大学的时候不好好学习,老师在讲台上讲课,自己在以为老师看不到的座位看小说,现在用到了老师讲的知识,只能自己看书查资...
    和珏猫阅读 1,494评论 1 3
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,418评论 11 349
  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,759评论 1 19
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 异常如下 解决办法: 1. 插拔下USB连接线 2. 关闭USB模式再打开 3. 执行以下命令 4.重新输入 ad...
    彭業阅读 1,262评论 0 0