Java编程实现从尾到头打印链表代码实例

下面是Java编程实现从尾到头打印链表代码实例的完整攻略。

1. 思路分析

从尾到头打印链表,可以想到两种方式:

  • 反转链表,并正序打印
  • 从尾到头遍历链表,借助栈的先进后出特性

我们可以选择使用第二种方式来实现。具体步骤如下:

  1. 从头到尾遍历链表,将节点值依次入栈
  2. 遍历完整个链表后,依次弹出栈的元素,即可实现从尾到头打印链表

2. 代码实现

2.1 定义ListNode类

首先,我们需要定义一个链表节点的类,用来构建链表。

public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

2.2 实现printListFromTailToHead方法

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list = new ArrayList<>();
        Stack<Integer> stack = new Stack<>();
        ListNode cur = listNode;
        // 遍历链表,将节点值入栈
        while (cur != null) {
            stack.push(cur.val);
            cur = cur.next;
        }
        // 依次弹出栈顶元素,添加到输出数组中
        while (!stack.empty()) {
            list.add(stack.pop());
        }
        return list;
    }
}

3. 测试示例

3.1 示例1:

ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);

Solution solution = new Solution();
ArrayList<Integer> list = solution.printListFromTailToHead(head);
System.out.println(list);

输出结果为:

[3, 2, 1]

3.2 示例2:

ListNode head = new ListNode(1);

Solution solution = new Solution();
ArrayList<Integer> list = solution.printListFromTailToHead(head);
System.out.println(list);

输出结果为:

[1]

至此,Java编程实现从尾到头打印链表的完整攻略就结束了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java编程实现从尾到头打印链表代码实例 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 浅谈Redis哨兵模式高可用解决方案

    下面就是详细讲解“浅谈Redis哨兵模式高可用解决方案”的完整攻略。 什么是Redis哨兵模式? Redis是一种开源的、基于内存的数据结构存储系统,支持多种数据结构,例如字符串、哈希、列表、集合等等。Redis的哨兵模式是一种高可用的解决方案,主要用于保证Redis集群中的主从节点切换时,数据不会丢失,保证服务的可用性。 哨兵模式是通过在Redis集群中添…

    other 2023年6月26日
    00
  • 开发者在Idea 中常见的配置,你都了解吗

    是的,下面是一份“开发者在Idea中常见的配置”的完整攻略。 Idea 概述 Idea是JetBrains公司开发的一个Java 集成开发环境(IDE),支持Java、Kotlin、Python等多种编程语言。是目前主流的Java开发工具之一。在使用Idea进行开发时,有一些常见的配置非常有用。 常见配置 1. JDK 配置 在使用Idea进行Java开发之…

    other 2023年6月26日
    00
  • Endnote怎么关闭区分大小写功能?Endnote关闭区分大小写方法

    要关闭Endnote的区分大小写功能,您可以按照以下步骤进行操作: 打开Endnote软件并选择您要关闭区分大小写功能的文档。 在菜单栏中,点击\”Edit\”(编辑)选项。 在下拉菜单中,选择\”Preferences\”(首选项)。 在弹出的首选项窗口中,选择\”Reference Types\”(参考类型)选项卡。 在参考类型列表中,选择您想要关闭区分…

    other 2023年8月16日
    00
  • eclipse安装activiti工作流插件

    Eclipse安装Activiti工作流插件的完整攻略 Activiti工作流插件是一款基于Eclipse平台的插件,可以用于开发和调试Activiti工作流应用程序。Activiti工作流插件提供了丰富的工作流设计器和调试工具,可以方便地创建和管理工作流定义、任务和流程实例等。本文将介绍Eclipse安装Activiti工作流插件的完整攻略,包括使用Ecl…

    other 2023年5月9日
    00
  • WWDC2020除了iOS14还有哪些新内容?WWDC2020开发者大会内容介绍

    WWDC2020除了iOS14还有哪些新内容? 概述 WWDC2020是苹果公司每年的一次大型开发者大会,旨在向广大开发者介绍苹果最新技术的发展、解读未来趋势等内容。除了发布iOS14,WWDC2020还涵盖了多个其他领域的内容。 macOS Big Sur 苹果公司在WWDC2020发布了macOS Big Sur操作系统,该系统的全新设计语言让用户的操作…

    other 2023年6月26日
    00
  • 批处理应用:根据文件内容进行重命名操作

    当我们的电脑中需要重命名多个文件时,手动重命名费时费力,这时候我们可以用批处理程序来快速完成此任务,并且可以根据文件内容进行批量重命名操作。 以下是实现此任务的完整攻略: 1. 确定文件名规则 在进行批处理文件重命名操作前,我们需要先确定文件名规则。例如,我们想要把一个文件夹中的所有PNG格式的文件名都改为“文件名_日期.PNG”的形式,那么我们就需要先准备…

    other 2023年6月26日
    00
  • VisualStudio Code怎么按文件名搜索? vscode按文件名搜索的教程

    Visual Studio Code如何按文件名搜索 在 Visual Studio Code 中,你可以按照文件名搜索文件,以便快速定位目标文件。下面是按照文件名搜索的两种方法: 方法一:使用 Quick Open 搜索 Quick Open 功能可以让我们更快速地打开文件。它支持按照文件名搜索文件,方法如下: 使用快捷键 Ctrl + P(MacOS 使…

    other 2023年6月26日
    00
  • springboot @PostConstruct无效的解决

    问题描述: 在使用 SpringBoot 框架时,通过 @PostConstruct 注解修饰的方法可能会出现无法执行的情况。 解决过程: 1.确认依赖 首先,我们需要确认在项目中是否引入了正确的依赖。在 pom.xml 文件中,需要引入 spring-boot-starter-web 包,这个包中含有使用到 @PostConstruct 注解的相关类和方法…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部