Java怎么实现打印链表
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章主要介绍"Java怎么实现打印链表",在日常操作中,相信很多人在Java怎么实现打印链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实现打印链表"
千家信息网最后更新 2024年12月12日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安全错误
数据库的锁怎样保障安全
太库科技 总评互联网
远程医疗软件开发
网络安全问题论文4000
珠海fil服务器行情
信息终端网络安全数据安全
中行csp软件开发语言
服务器 微信聊天记录
qt开发常用的软件开发框架
网络安全责任考核自查
西安app软件开发解决方案
asp数据库技术
我的世界为什么会卡在定位服务器
湖南软件开发的大专
计算科学与技术专业数据库
网络安全为人民 教案
盐城网络安全作用
组装小型服务器主机
服务器数据库怎么同步
数据库是我元素
报表服务器的安全性
数据库环境安全
唐山网络技术选择
客户端游戏软件开发
如小学生如何应对网络安全
linux数据库应用程序
不可识别数据库qrcs
数据库Join
医疗软件开发难度
互联网生活科技公司简介
智慧生活网络技术有限公司