题目:

输入一个链表的头结点,从尾到头反过来打印每个结点的值。

链表结点定义:

struct ListNode{int value;ListNode* pNext;
};

思路:

1、改变链表结构的话,先反转链表,然后从头到尾打印每个结点的值。(后续博文会有相关实现,这里就暂不实现)

2、无需改变链表结构,使用栈,遍历整个链表,将结点依次入栈,然后再依次出栈,实现“后进先出”。

3、无需改变链表结构,递归实现,如果链表结点数过多的话,可能会导致栈溢出。

代码:

void PrintListReversingly_Iteratively(ListNode* pHead){std::stack<ListNode*> nodes;ListNode* pNode=pHead;while(pNode!=NULL){nodes.push(pNode);pNode=pNode->pNext;}while(!nodes.empty()){pNode=nodes.top();cout<<pNode->value<<"\t";nodes.pop();}cout<<endl;
}void PrintListReversingly_Recursively_1(ListNode* pHead){if(pHead==NULL)return;PrintListReversingly_Recursively_1(pHead->pNext);cout<<pHead->value<<"\t";
}void PrintListReversingly_Recursively_2(ListNode* pHead){if(pHead!=NULL){if(pHead->pNext!=NULL)PrintListReversingly_Recursively_2(pHead->pNext);cout<<pHead->value<<"\t";}
}

在线测试OJ:

http://www.nowcoder.com/books/coding-interviews/d0267f7f55b3412ba93bd35cfa8e8035?rp=1

AC代码:

/**
*  struct ListNode {
*       int val;
*       struct ListNode *next;
*       ListNode(int x) :
*             val(x), next(NULL) {
*       }
*  };
*/
class Solution {
public:void printList(ListNode* head,vector<int> &nodes){if(head!=NULL){printList(head->next,nodes);nodes.push_back(head->val);}return;}vector<int> printListFromTailToHead(struct ListNode* head) {vector<int> nodes;printList(head,nodes);return nodes;}
};

/**
*  struct ListNode {
*       int val;
*       struct ListNode *next;
*       ListNode(int x) :
*             val(x), next(NULL) {
*       }
*  };
*/
class Solution {
public:vector<int> printListFromTailToHead(struct ListNode* head) {vector<int> nodes;while(head!=NULL){nodes.push_back(head->val);head=head->next;}reverse(nodes.begin(),nodes.end());return nodes;}
};

  

转载于:https://www.cnblogs.com/AndyJee/p/4624417.html

(剑指Offer)面试题5:从尾到头打印链表相关推荐

  1. 剑指offer面试题[5]-从尾到头打印链表

    目描述 输入一个链表,从尾到头打印链表每个节点的值. /** *  struct ListNode { *        int val; *        struct ListNode *next ...

  2. 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)

    文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...

  3. 剑指offer 面试题5—从尾到头打印链表

    题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 考虑用栈 public void invertedList1(ListNode head) {if (head == null) {r ...

  4. 剑指offer面试题06. 从尾到头打印链表(辅助栈法)

    题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 思路 详见链接 代码 class Solution:def reversePrint(self,head:ListNod ...

  5. 剑指Offer - 九度1511 - 从尾到头打印链表

    剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案 ...

  6. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  7. 【剑指offer】登峰造极之从尾到头打印链表

    题目链接 从尾到头打印链表. 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:1254529 题目描述 /** struct ListNode { i ...

  8. 剑指offer(C++)-JZ6:从尾到头打印链表(数据结构-链表)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回). 如输入{ ...

  9. 【剑指offer-Java版】05从尾到头打印链表

    从头到尾打印链表:递归实现比较简单 注意处理异常输入:如输入指针为空 处理边界条件等即可 public class _Q05 {public static void main(String[] arg ...

  10. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

最新文章

  1. Linux web 网站服务器 虚拟主机
  2. 深度学习AI美颜系列---天天P图疯狂变脸算法
  3. 错误(活动)E0020未定义标识符 “_TCHAR“
  4. Java 9 揭秘(1. 入门介绍)
  5. java基本数据类型和包装类相互转换
  6. Tcpdump 详解
  7. mysql 5.7.18 winx64安装配置方法
  8. 都忘了自己还有一套房子了。。。
  9. python2020未来前景_2020年Python发展前景如何呢?
  10. linux运行多个c文件路径,linux c的连接库和怎么同时编译多个源程序
  11. 最新版 | 李沐《动手学深度学习》中文版pdf重磅开源!
  12. 去掉 iOS 导航栏返回按钮文本三种方案
  13. 除了被动阅读,用户想要的更多
  14. 手机浏览器哪个好用,UC、多御和QQ浏览器对比
  15. 关于windows11麦克风声音小的一个bug
  16. 2021年广东专精特新中小企业补助及小巨人企业补贴
  17. Docker 5分钟搭建web服务器
  18. 如何在r的图片中画出特定点的水平线和垂直线_平面设计新手如何利用点线面进行构图...
  19. Android 高级混淆和代码保护技术
  20. cf_global_round7

热门文章

  1. 父盒子高度为子盒子总高度自动撑满 height: fit-content; //设置内容高度
  2. React开发(282):公共组件可以提升一下文件层级
  3. React开发(211):react中refs转发到dom组件
  4. [html] 使用history路由方式时,你有自己动手配置过服务器端吗?为什么要配服务器端?怎么配?
  5. 工作308:uni-设置请求参数
  6. 前端学习(2796):实现左侧数据渲染和点击高亮
  7. 前端学习(2475):表单数据绑定处理
  8. “约见”面试官系列之常见面试题之第五十一篇之CSS Sprites(建议收藏)
  9. oracle之单行函数之分组函数之课后练习
  10. 前端学习(1563):ng-if