从尾到头打印链表

题目描述

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

题目链接: 从尾到头打印链表

代码

  1. import java.util.ArrayList;
  2. /**
  3. * 标题:
  4. * 题目描述
  5. *
  6. * <p>
  7. * 题目链接
  8. *
  9. */
  10. public class Jz03 {
  11. /**
  12. * 非递归
  13. *
  14. * @param listNode
  15. * @return
  16. */
  17. public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
  18. ArrayList<Integer> res = new ArrayList<>();
  19. for (; listNode != null; listNode = listNode.next) {
  20. res.add(0, listNode.val);
  21. }
  22. return res;
  23. }
  24. /**
  25. * 递归
  26. *
  27. * @param listNode
  28. * @return
  29. */
  30. public static ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
  31. ArrayList<Integer> res = new ArrayList<Integer>();
  32. if (listNode != null) {
  33. res.addAll(printListFromTailToHead1(listNode.next));
  34. res.add(listNode.val);
  35. }
  36. return res;
  37. }
  38. public static void main(String[] args) {
  39. ListNode node = new ListNode(67);
  40. ListNode node1 = new ListNode(0);
  41. ListNode node2 = new ListNode(24);
  42. ListNode node3 = new ListNode(58);
  43. node.next = node1;
  44. node1.next = node2;
  45. node2.next = node3;
  46. // 非递归
  47. System.out.println("非递归~~~");
  48. ArrayList<Integer> res = printListFromTailToHead(node);
  49. for (int val : res) {
  50. System.out.println(val);
  51. }
  52. // 递归
  53. System.out.println("递归~~~");
  54. ArrayList<Integer> res1 = printListFromTailToHead1(node);
  55. for (int val : res1) {
  56. System.out.println(val);
  57. }
  58. }
  59. }

【每日寄语】 方向对了,就不怕路远。坚持不仅是一种品质,也是一种信念。

JZ-003-从尾到头打印链表的更多相关文章

  1. 剑指Offer面试题:4.从尾到头打印链表

    一.题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 到解决这个问题肯定要遍历链表.遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头.也就是说第一个遍历到的结 ...

  2. 剑指Offer 从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的“新链表”的表头 思路: 用容器vector,递归到最后一个元素,push_back到 ...

  3. offer--链表反转和从尾到头打印链表

    这个是高频的面试题,今天总结了一些.反转链表用三个指针实现,返回新链表的头节点:而从尾到头打印,应用栈实现,返回vector整个链表. //题目描述 // //输入一个链表,反转链表后,输出链表的所有 ...

  4. P51、面试题5:从尾到头打印链表

    题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 链表结点定义如下: Struct ListNode{ int   m_nKey; ListNode*   m_pNext; }; 我们可 ...

  5. 九度OJ 1511 从尾到头打印链表

    题目地址:http://ac.jobdu.com/problem.php?pid=1511 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测 ...

  6. 剑指offer——从尾到头打印链表节点的值

    输入一个链表,从尾到头打印链表每个节点的值. 输入描述:输入为链表的表头 输出描述:输出为需要打印的“新链表”的表头 一.问题分析 初拿到这个题目时,这应该是考察单向链表这一数据结构.单向链表的遍历总 ...

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

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

  8. C++版 - 剑指offer 面试题5:从尾到头打印链表 题解

    面试题5:从尾到头打印链表 提交网址: http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tq ...

  9. 《剑指offer》从尾到头打印链表

    本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先 ...

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

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

随机推荐

  1. python小兵之时间模块

    Python  日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间 ...

  2. ApacheCN C# 译文集 20211124 更新

    C# 代码整洁指南 零.前言 一.C# 代码标准和原则 二.代码审查--过程和重要性 三.类.对象和数据结构 四.编写整洁的函数 五.异常处理 六.单元测试 七.端到端系统测试 八.线程和并发 九.设 ...

  3. Java中Type接口及其子类

    简介 Type是Java 编程语言中所有类型的公共高级接口,和Object不同,Object是所有类的父类,即Object是Type的父类. 分类 原始类型(Class):不仅仅包含我们平常所指的类, ...

  4. android 安装gcc环境

    看到了一篇关于Android上利用终端来使用gcc编译C/C++源程序的文章,我感到无比兴奋,所以立刻将我自己的安装过程记下来.那个后记也很有用的. gcc编译源代码需要创建临时文件,而gcc又只能安 ...

  5. 前端开发Grunt工具的安装使用

    随着前端开发效果越来越丰富,前端的结构也越来越复杂,这个时候就需要一个工具来进行管理,可以帮你做语法校验,文件拼接,代码压缩,文件清理等等琐事,Grunt就是这么一个不错的工具. 安装并不复杂,只要先 ...

  6. OSPF路由协议基础知识

    OSPF路由协议 1.OSPF的基本概念 2.OSPF邻接关系的建立 3.OSPF的应用环境 4.OSPF的基本配置命令 1.OSPF区域为了适应大型的网络,OSPF在AS(自治系统)内划分多个区域. ...

  7. 关于CSP-S2019的一篇游记

    怎么讲呢? Day1:7:00左右从家里出发,准备还是做得比较充分,早饭也记得吃了.路上闭目养神了一会儿,7:50左右到了大门附近,和大家再次把一些自认为还是比较重要的数据结构之类的再复习了一下.进去 ...

  8. springBoot工程解决跨域问题

    更新:通过一个 @CrossOrigin  注解就可以完美解决跨域问题. 创建一个配置类 package com.miaoshaProject.configuration; import org.sp ...

  9. nginx负载均衡中常见的算法及原理有哪些?

    一.nginx负载均衡常用算法 1.1 轮询 轮询,nginx默认方式.一次将请求分配给各个后台服务器. upstream backserver { server 10.0.0.7; server 1 ...

  10. Ubuntu18修改系统时间

    1. 运行 tzselect 依次选择 Asia -> China -> Beijing Time 2. 复制文件到 /etc 下 sudo cp /usr/share/zoneinfo/ ...