一、题目:

  输入一个链表,从尾到头打印链表每个节点的值。

二、解题方法:

  方法一:采用递归的方式实现

方法二:借助堆栈的“后进先出”实现

import java.util.ArrayList;
import java.util.Stack;/*** 输入一个链表,从尾到头打印链表每个节点的值*/
class Test13 {public static void main(String[] args) {//创建单链表ListNode node1 = new ListNode(1);ListNode node2 = new ListNode(2);ListNode node3 = new ListNode(3);node1.next = node2;node2.next = node3;//采用递归的方式实现PrintListTailtoHead p = new PrintListTailtoHead();ArrayList<Integer> list = p.printListFromTailToHead(node1);System.out.println(list.toString());System.out.println("-------------");//借助堆栈的“后进先出”实现(容易理解)PrintListTailtoHead2 p2 = new PrintListTailtoHead2();ArrayList<Integer> list2 = p2.printListFromTailToHead2(node1);System.out.println(list2.toString());}
}//节点
class ListNode {int value;ListNode next = null;ListNode() {}ListNode(int value) {this.value = value;}
}//方法1:采用递归的方式实现
class PrintListTailtoHead {public ArrayList<Integer> printListFromTailToHead(ListNode headNode) {ArrayList<Integer> list = new ArrayList<Integer>();//递归if (headNode != null) {if (headNode.next != null) {list =printListFromTailToHead(headNode.next);}list.add(headNode.value);}return list;}
}//方法2:借助堆栈的“后进先出”实现
class PrintListTailtoHead2{public ArrayList<Integer> printListFromTailToHead2(ListNode headNode) {//存入栈中Stack<Integer> stack=new Stack<Integer>();while (headNode!=null){stack.push(headNode.value);headNode=headNode.next; //重要,不要忘记
        }//从栈中取出存入集合中ArrayList<Integer> arrayList=new ArrayList<Integer>();while (!stack.empty()) {arrayList.add(stack.pop());}//返回结果return arrayList;}
}

View Code

转载于:https://www.cnblogs.com/hezhiyao/p/7609577.html

剑指offer三从头到尾打印链表相关推荐

  1. 剑指offer 06.逆向打印链表

    一个获取链表的长度的方法 初始化数组长度 反转方法中进行逆向循环赋值 /*** Definition for singly-linked list.* public class ListNode {* ...

  2. 剑指offer.从未到头打印链表

    输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值.返回的结果用数组存储. 样例 输入:[2, 3, 5] 返回:[5, 3, 2] 1.使用栈. class Solution { public ...

  3. 剑指Offer三天挑战赛16~32

    文章目录 剑指 Offer 16. 数值的整数次方 解 剑指 Offer 17. 打印从1到最大的n位数 解 剑指 Offer 18. 删除链表的节点 解 剑指 Offer 19. 正则表达式匹配 解 ...

  4. 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java

    <LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...

  5. 【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点

    [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 文章目录 [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 一.双指针 一.双指针 设 "第一个 ...

  6. 剑指Offer(10)有环链表 翻转链表

    剑指offer(10) 有环链表 反转链表 题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 思路: 快慢指针,当前一个指针和后一个指针相遇时,有环,提前结束则无. ...

  7. 剑指 Offer 52. 两个链表的第一个公共节点

    题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不 ...

  8. 剑指offer--从尾到头打印链表

    记录来自<剑指offer>的算法题目 链表应该是面试时被提及最频繁的数据结构,它的结构简单,由若干个结点连接成链状结构,其创建.插入结点.删除结点等操作都只需要20行左右的代码就能实现,其 ...

  9. 剑指Offer三天挑战赛03~15

    文章目录 剑指 Offer 03. 数组中重复的数字 解 剑指 Offer 04. 二维数组中的查找 解 剑指 Offer 05. 替换空格 解 剑指 Offer 06. 从尾到头打印链表 解 剑指 ...

最新文章

  1. matlab生成常用信号(方波、三角波、随机信号、单位冲激)
  2. 【Blog.Core开源】快速预览Admin界面效果
  3. mongoDB Error:not master and slaveOk=false
  4. HALCON 20.11:学习笔记---一维测量(Measuring)
  5. 王者荣耀改重复名,空白名最低战力查询助手微信小程序源码下载
  6. HCIA---华为认证初级网络工程师
  7. Tampermonkey油猴插件
  8. 微信小程序项目源码在线考试系统+后台含论文+PPT+源码
  9. 高斯消元法——Matlab解线性方程组(1)
  10. java 保龄球游戏开发_2019-11-08-基于TDD实现的java版本的保龄球规则(实体类)
  11. Sverlet案例小萌神服务器端
  12. 用python实现聚类分析
  13. 基于layui的后台管理模板
  14. python中级水平_Python 中级知识点
  15. 麦肯锡三部曲_越拼命工作,越不快乐?麦肯锡“提问式思维”帮你发现问题本质...
  16. 通过Linux shell实现的花生壳动态域名解析(DDNS)
  17. No boot filename received
  18. web前端学习第一周总结
  19. Android终端启用adb功能
  20. PHP抖音无水印解析api

热门文章

  1. github常见操作和常见错误!
  2. python 持续集成_使用jenkins和Gitlab进行Python项目的持续集成
  3. 实用的无锁队列(二)
  4. oracle:oracle基础知识(二)
  5. tomcat启动 报tomcat org.apache.catalina.LifecycleException
  6. 【Elasticsearch】实用BM25 -第2部分:BM25算法及其变量
  7. 【lucene】lucene自定义评分
  8. 【Clickhouse】Clickhouse PRIMARY KEY, CONSTRAINT, identifier, column declaration, INDEX
  9. 【Elasticsearch】zen discovery集群发现机制
  10. 【elasticsearch】elasticsearch 熔断器