Java怎么实现打印链表
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要介绍"Java怎么实现打印链表",在日常操作中,相信很多人在Java怎么实现打印链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实现打印链表"
千家信息网最后更新 2025年02月03日Java怎么实现打印链表
这篇文章主要介绍"Java怎么实现打印链表",在日常操作中,相信很多人在Java怎么实现打印链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实现打印链表"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
题目
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
分析
仅仅看这个题目,有点不知道怎么下手的感觉,意思明白,但是怎么做呢?首先我们的准备一个链表,题目给了提示,我们创建一个ListNode 类,内容如下
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
这样就可以用来表示一个链表了,比如我们创建一个 1 3 5 8 的链表
ListNode listNode=new ListNode(1);
listNode.next=new ListNode(3);
listNode.next.next=new ListNode(5);
listNode.next.next.next=new ListNode(8);
好了,准备工作算是做好了,我们接下来看看题目,要将链表的元素从头到尾装到list 中,这里有两种思路。栈的后进先出原理,先将链表数据压入栈中,然后依次从栈中取出数据存入到list 中。还有一种就是使用递归的方法,找到链表的最后一个节点,依次向前,我这里采用的就是递归的方法。
解法
使用递归,我们使用递归的方法,找到链表中的最后一个元素,将其加入到list 中。
public static ArrayList printListFromTailToHead(ListNode listNode) {
ArrayList list=new ArrayList<>();
if(listNode!=null){
add(list,listNode);
}
return list;
}
public static void add(ArrayList list,ListNode listNode){
//如果没有后续节点就将元素加入到list 中,如果有就递归找后续节点
if(listNode.next!=null){
add(list,listNode.next);
}
list.add(listNode.val);
}
源代码
package com.quellanan.algorithm.day2;
import java.util.ArrayList;
/**
* @ClassName Solution
* @Description DOTO
* @Author zhulinfeng
* @Date 2020/1/30 11:38
* @Version 1.0
*/
public class Solution {
public static void main(String[] args) {
ListNode listNode=new ListNode(1);
listNode.next=new ListNode(3);
listNode.next.next=new ListNode(5);
listNode.next.next.next=new ListNode(8);
ArrayList list=printListFromTailToHead(listNode);
while(listNode.next!=null){
System.out.print(listNode.val+"\t");
listNode=listNode.next;
}
System.out.println(listNode.val);
for(int i=0;i System.out.print(list.get(i)+"\t");
}
}
public static ArrayList printListFromTailToHead(ListNode listNode) {
ArrayList list=new ArrayList<>();
if(listNode!=null){
add(list,listNode);
}
return list;
}
public static void add(ArrayList list,ListNode listNode){
if(listNode.next!=null){
add(list,listNode.next);
}
list.add(listNode.val);
}
}
测试
到此,关于"Java怎么实现打印链表"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
递归
方法
题目
学习
元素
节点
接下来
就是
数据
更多
准备
帮助
实用
从头到尾
从头
内容
原理
后进
思路
意思
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器时间与本机时间设置不同
从软件设计到软件开发
网络安全事件事故处置情况
如何验证sl数据库映射成功
夯实数据库建设以行稳致远
虹口区会议视频系统服务器
计算网络技术模拟试题题
社区居委会网络安全责任制度
西宁软件开发培训机构
电信网络技术工程师面试问题
外企德科数据库
博山文件审批oa软件开发
石榴 微型服务器
吴中区知名服务器厂家直销价格
软件开发岗位报告书
扬州网络安全市场报价
ipv6网络安全工作目标
ping内网服务器请求超时
嘉定区车载网络技术有哪些
广州新华互联网科技学院
儿童网络安全与教育图片
网络安全风险评估的原则
苏州应用刀片服务器价格
325棋牌游戏软件开发
大发棋牌是哪的服务器
数据库的SQL的语句更新
联想服务器管理口ip进不去
软件开发进入小公司
国产power服务器
移动终端软件开发需要考哪些证书