剑指offer三从头到尾打印链表
一、题目:
输入一个链表,从尾到头打印链表每个节点的值。
二、解题方法:
方法一:采用递归的方式实现
方法二:借助堆栈的“后进先出”实现
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三从头到尾打印链表相关推荐
- 剑指offer 06.逆向打印链表
一个获取链表的长度的方法 初始化数组长度 反转方法中进行逆向循环赋值 /*** Definition for singly-linked list.* public class ListNode {* ...
- 剑指offer.从未到头打印链表
输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值.返回的结果用数组存储. 样例 输入:[2, 3, 5] 返回:[5, 3, 2] 1.使用栈. class Solution { public ...
- 剑指Offer三天挑战赛16~32
文章目录 剑指 Offer 16. 数值的整数次方 解 剑指 Offer 17. 打印从1到最大的n位数 解 剑指 Offer 18. 删除链表的节点 解 剑指 Offer 19. 正则表达式匹配 解 ...
- 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
<LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...
- 【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点
[LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 文章目录 [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 一.双指针 一.双指针 设 "第一个 ...
- 剑指Offer(10)有环链表 翻转链表
剑指offer(10) 有环链表 反转链表 题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 思路: 快慢指针,当前一个指针和后一个指针相遇时,有环,提前结束则无. ...
- 剑指 Offer 52. 两个链表的第一个公共节点
题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不 ...
- 剑指offer--从尾到头打印链表
记录来自<剑指offer>的算法题目 链表应该是面试时被提及最频繁的数据结构,它的结构简单,由若干个结点连接成链状结构,其创建.插入结点.删除结点等操作都只需要20行左右的代码就能实现,其 ...
- 剑指Offer三天挑战赛03~15
文章目录 剑指 Offer 03. 数组中重复的数字 解 剑指 Offer 04. 二维数组中的查找 解 剑指 Offer 05. 替换空格 解 剑指 Offer 06. 从尾到头打印链表 解 剑指 ...
最新文章
- matlab生成常用信号(方波、三角波、随机信号、单位冲激)
- 【Blog.Core开源】快速预览Admin界面效果
- mongoDB Error:not master and slaveOk=false
- HALCON 20.11:学习笔记---一维测量(Measuring)
- 王者荣耀改重复名,空白名最低战力查询助手微信小程序源码下载
- HCIA---华为认证初级网络工程师
- Tampermonkey油猴插件
- 微信小程序项目源码在线考试系统+后台含论文+PPT+源码
- 高斯消元法——Matlab解线性方程组(1)
- java 保龄球游戏开发_2019-11-08-基于TDD实现的java版本的保龄球规则(实体类)
- Sverlet案例小萌神服务器端
- 用python实现聚类分析
- 基于layui的后台管理模板
- python中级水平_Python 中级知识点
- 麦肯锡三部曲_越拼命工作,越不快乐?麦肯锡“提问式思维”帮你发现问题本质...
- 通过Linux shell实现的花生壳动态域名解析(DDNS)
- No boot filename received
- web前端学习第一周总结
- Android终端启用adb功能
- PHP抖音无水印解析api
热门文章
- github常见操作和常见错误!
- python 持续集成_使用jenkins和Gitlab进行Python项目的持续集成
- 实用的无锁队列(二)
- oracle:oracle基础知识(二)
- tomcat启动 报tomcat org.apache.catalina.LifecycleException
- 【Elasticsearch】实用BM25 -第2部分:BM25算法及其变量
- 【lucene】lucene自定义评分
- 【Clickhouse】Clickhouse PRIMARY KEY, CONSTRAINT, identifier, column declaration, INDEX
- 【Elasticsearch】zen discovery集群发现机制
- 【elasticsearch】elasticsearch 熔断器