递归的本质是栈,能用栈解决的问题都可转换为递归的程序结构。

链表结点做如下定义:

struct ListNode
{int val;ListNode* next;
};

这是一道典型的“先进后出”的案例,先进后出,我们可以使用 stack 实现这种顺序。

void PrintListReversely_Iteratively(ListNode* pHead)
{std::stack<ListNode*> nodes;while (pNode)   {nodes.push(pNode);pNode = pNode->next;}while(!nodes.empty()){print("%d\t", nodes.top()->val);nodes.pop();}
};

既然想到了用栈来实现这一函数,而递归的本质是一个栈结构,于是很自然地想到用递归来实现。

void PrintListReversely_Recursively(ListNode* pHead)
{if (pHead){if (pHead->next)PrintListReversely_Recursively(pHead->next);print('%d\t', pHead->val);// 如果将这条打印语句,放在第二条 if 判断之前,就是顺序式的了}
}

[面试] 算法(七)—— 逆序输出链表相关推荐

  1. 剑指offer例题5—逆序输出链表

    使用递归: #include<iostream> using namespace std; struct ListNode {int value;ListNode *next; }; vo ...

  2. 单链表的前K个的逆序输出

    单链表逆序输出也是常被面试官问到题算法题,所以自己就总结了一下,在此贴出算法,与小伙伴们相互交流. 首先要有三个指针,前两个分别指向首节点,首节点的下一个节点,第三个是临时指针,是为了储存首节点的下一 ...

  3. c语言将一个已知头结点的单链表逆序_C语言实现单链表逆序与逆序输出实例

    单链表的逆序输出分为两种情况,一种是只逆序输出,实际上不逆序:另一种是把链表逆序.本文就分别实例讲述一下两种方法.具体如下: 1.逆序输出 实例代码如下: #include #include #inc ...

  4. 语言print如何实现连续输出_【每日一题】如何实现一个高效的单向链表逆序输出?...

    今后,动力节点Java学院将每天为大家带来一道大厂面试真题,这些面试题都是大厂技术专家们结合多年的工作.面试经验总结提炼而成的面试真题. 通过这些面试题,还可以间接地了解技术大牛们出题思路与考察要点. ...

  5. 阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?

    面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明.发现一个好工作不容易,但成功应聘又会面临一系列的挑战. 为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑--阿里 ...

  6. C语言-链表逆序输出

    逆序输出 (10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输入格式: ...

  7. 单链表逆序输出(递归)

    将单链表逆序输出 对于单链表逆序输出不改变链表结构可以考虑使用递归实现. 递归输出的主要思路为:先输出除当前节点外的后继子链表,然后输出当前结点.假如链表为:1->2->3->4-& ...

  8. 【数据结构】单链表的逆序输出(两种方法)

    第一种方法:转换指针方向 即:将一个已经创建好的单链表进行指针域的改变 今天突然被问到单链表逆序的问题,弄了好久才看出别人的程序有啥问题,就重新写了一遍. 今天才在CSDN客户端上看到美团的面试题是冒 ...

  9. 算法竞赛入门经典_3.1_数组_逆序输出_开灯问题

    又是新的一天,继续更新. 今天进入了新的章节,数组和字符串 1.逆序输出问题: 先来看代码吧 #include <stdio.h> //逆序输出 2017-8-16 #define max ...

最新文章

  1. less.js插件监听
  2. 从源码分析DEARGUI之add_tooltip
  3. html css integrity,integrity 属性
  4. python 青蛙跳台阶问题
  5. 误区30日谈16-20
  6. C语言fputs()函数(把字符串写入到指定的流 stream (文件指针)中)
  7. Sublime Text
  8. creator找不到编译器 qt_VS2017直接使用QT库创建程序
  9. 工业机器人入门实用教程_机器学习实用入门
  10. 申请表怎么填才能提高信用卡额度?
  11. windows简单TCP通信 C++
  12. jetbrains(IDEA/Pycharm)修改断点的颜色与调试时debugger的颜色
  13. linux服务器分区方案
  14. c语言malloc引用类型作参数,c语言中动态内存分配malloc只在堆中分配一片内存.doc...
  15. Oracle的学习一:安装与卸载、sql *plus常用命令、Oracle用户管理
  16. Android RecyclerView批量更新notifyItemRangeChanged
  17. 【路径规划】基于matlab A_star算法机器人走迷宫路径规划【含Matlab源码 1332期】
  18. 合并pdf文件最简单的方法
  19. 一张帖搞定同学们入学黑马前所有难题
  20. 平面向量内积坐标公式推导_向量内积的坐标表示.ppt

热门文章

  1. java动态数组储存敌机_如何使用参数通过graphql将动态数组字符串存储为neo4j中的节点属性?...
  2. 服务器环控信息,服务管理监控平台
  3. android firefox 版本,Android版本Firefox初期预览版发布
  4. Delphi 下用Windows API 创建窗体
  5. python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码
  6. mysql查球队胜场和败场sql_NBA球队_nba有哪些球队_NBA史上实力最弱的球队是哪个?用Python+SQL我们找到了答案...
  7. Cocos Creator 组件-画笔
  8. 一个字符带下滑线的EditText
  9. 【python自动化第十篇:】
  10. 使用Hash函数和MAC产生伪随机数