问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值。

首先定义链表结点

public class ListNode {
int val;
ListNode next = null;
ListNode(int val){
this.val = val;
}
}

思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈。最后在遍历栈出栈。

public static Stack<Integer> printListReverse_Stack(ListNode listNode){
Stack<Integer> stack = new Stack<Integer>();
if(listNode != null){
ListNode p = listNode;
while(p != null){
stack.add(p.val);
p = p.next;
}
}
return stack;
}

思路2:直接遍历链表,按照头插法依次插入ArrayList即可

public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素

        ArrayList<Integer> print = new ArrayList<Integer>();
if(listNode == null){
return print;
}
int add = 0;
ListNode p = listNode;
while(p != null){
print.add(0, p.val);
p = p.next;
} return print; }

思路3:可以使用递归的思想(本质也是栈的思想)

public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){
ArrayList<Integer> print = new ArrayList<Integer>();
if(listNode == null){
return print;
}
print.addAll(printListReversely_Recursively(listNode.next)); print.add(listNode.val);
return print; }

剑指Offer:面试题5——从尾到头打印链表(java实现)的更多相关文章

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

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

  2. JS 剑指Offer(四) 从尾到头打印链表

    题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 首先定义一下链表中的节点,关于链表这个数据结构在另外一篇文章中会详细讲 function ListNode(val) { t ...

  3. 剑指offer【03】- 从尾到头打印链表(4种实现方法)

    题目:从尾到头打印链表 考点:链表 题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 法一:ArrayList头插法 /** * public class ListNode ...

  4. 剑指offer(3)从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. 题目分析 比较简单,主要注意下从尾到头,可以用栈可以用递归,我给出我比较喜欢的代码吧 代码 /* function ListNode(x){ t ...

  5. 剑指offer第二版-6.从尾到头打印链表

    描述:输入一个链表的头节点,从尾到头打印每个节点的值. 思路:从尾到头打印,即为“先进后出”,则可以使用栈来处理:考虑递归的本质也是一个栈结构,可递归输出. 考点:对链表.栈.递归的理解. packa ...

  6. 【剑指Offer】3、从尾到头打印链表

      题目描述:   输入一个链表,按链表值从尾到头的顺序返回一个ArrayList.   解题思路:   (三种方法:借助栈.递归.列表的首位插入)   从头到尾打印链表比较简单,从尾到头很自然的可以 ...

  7. 剑指Offer编程题3——从尾到头打印链表

    题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList.   题目解析 方法1:建立两个vector,第一个用来存储正向访问的数据,第二个用来反向存储. /** * struct L ...

  8. 剑指offer_面试题5_从尾到头打印链表(栈和递归实现)

    题目:输入一个链表的头结点,从尾到头反过来打印出每一个节点的值 考察 单链表操作.栈.递归等概念. 理解:要实现单链表的输出,那么就须要遍历.遍历的顺序是从头到尾.而节点输出的顺序是从尾到头.因此,先 ...

  9. 剑指offer(5)——从尾到头打印链表

    题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: public class ListNode { int val; ListNode next = null; ListN ...

  10. 剑指Offer_编程题之从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值.

随机推荐

  1. docker的一些用法

    复制文件,复制进去和复制出来一样用 docker cp 源文件 容器id:路径/目标文件 保存镜像 docker commit 容器id 名字 共享文件(加载vol) docker run -v 宿主 ...

  2. item3 二维数组中的查找[剑指offer]

    题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有这个整数? 8 9 思路:查找7 ...

  3. JavaScript-日期格式化(一)

    /** * 日期格式化, * @param date 要格式化的日期 * @param pattern 进行格式化的模式 * 支持的模式字母有: * y:年, * M:年中的月份(1-12), * d ...

  4. 转码:unescape("%u7B80%u4F53%u4E2D%u6587")--->escape("简体中文")

    unescape("%u7B80%u4F53%u4E2D%u6587")"简体中文"escape("简体中文") "%u7B80% ...

  5. PLSQL_性能优化系列15_Oracle Explain Plan解析计划解读

    2014-12-19 Created By BaoXinjian

  6. HDU 3001 Traveling(状压DP)

    题目大意:10个点的TSP问题,但是要求每个点最多走两边,不是只可以走一次,所以要用三进制的状态压缩解决这个问题.可以预处理每个状态的第k位是什么. 原代码链接:http://blog.csdn.ne ...

  7. 把vector中的string对象导入到字符指针数组中

    #include <iostream>#include <string>#include <vector>//#include <cctype>#inc ...

  8. 配置cwrsync实现windows2008和centos7文件定时同步

    一.准备 二.安装 1.安装cwRsyncServer_4.0.5_Installer.exe 安装过程中提示创建用于windows服务的windows用户名,需要注意的是密码一定要它自己生成的密码的 ...

  9. 转-TabHost组件(一)(实现底部菜单导航)

    http://www.cnblogs.com/lichenwei/p/3974009.html 什么是TabHost? TabHost组件的主要功能是可以进行应用程序分类管理,例如:在用户使用wind ...

  10. eclipse中输入@符号自动提示Annotation

    将Eclipse中Content Assist中的Auto activation for java里.的后面加上@符号即可