剑指offer(4):从尾到头打印链表
来源:互联网 发布:蛇会主动攻击人吗 知乎 编辑:程序博客网 时间:2024/05/19 13:26
题目描述:
输入一个链表的头结点,从尾到头反过来打印出每个节点的值。
分析:
直接思路:将链表反转之后再从头到尾输出,但是这样会改变原始输入链表的结构。(Tips:面试中如果打算改变输入数据,最后问清楚面试官的而要求,是否允许修改。)通常打印是一个只读操作,假设此题不允许修改输入数据。
思路1:
从尾到头打印链表,实际上是一个先遍历的节点后输出的过程,即“先入后出”的栈结构。很容易想到用栈结构实现该目的。
牛客AC代码:
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;import java.util.Stack;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); if(listNode == null) return list; // 栈结构实现“先进后出”,从尾到头打印 Stack<ListNode> stack = new Stack<ListNode>(); while(listNode != null) { stack.push(listNode); listNode = listNode.next; } while(!stack.empty()) { ListNode tmp = (ListNode)stack.pop(); list.add(tmp.val); } return list; }}
思路2:
考虑到递归调用本质上就是一个栈结构,自然想到可以用递归的方式实现:每次访问到一个节点,先递归输出它后面的节点,在输出该节点自身。
牛客AC代码:
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;public class Solution { ArrayList<Integer> arrayList=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ //先递归输出后面的节点,再输出自身 this.printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; }}
参考
1. 何海涛,剑指offer名企面试官精讲典型编程题(纪念版),电子工业出版社
0 0
- 剑指offer(4):从尾到头打印链表
- 剑指offer:面试4从尾到头打印链表
- 剑指offer(从尾到头打印链表)
- 剑指offer(3)-从尾到头打印链表
- 剑指offer(三)从尾到头打印链表
- 剑指offer--(3) 从尾到头打印链表
- 剑指offer--从尾到头打印链表(5)
- 剑指Offer(三)从尾到头打印链表
- 剑指offer系列(4)——从尾到头打印链表
- 剑指offer:5-从尾到头打印链表
- [剑指Offer]7.从尾到头打印链表
- 剑指offer:从尾到头打印链表
- 从尾到头打印链表--《剑指offer》
- 剑指Offer:从尾到头打印链表
- 【剑指offer】从尾到头打印链表
- 【剑指offer】Q5:从尾到头打印链表
- 剑指Offer之从尾到头打印链表
- 剑指offer系列源码-从尾到头打印链表
- finally关键字的理解
- 系统重力感应开关和Activity的屏幕方向属性值之间的区别
- Android调用Webservice
- CSS代码还原脚本
- DevExpress控件-TreeList使用总结
- 剑指offer(4):从尾到头打印链表
- 手机里竟然有这么多传感器!终于都搞懂了
- JavaScript学习---怎样引用显示百度地图
- 图解侧方停车技巧2015高清版
- windows下的redis 2.x 配置
- 写自己的ASP.NET MVC框架(下)
- UITableView取消多余的表格线条
- springMVC dubbo注解无效,service层返回空指针
- 如何生成符合高斯分布的数据集