Java编程实现从尾到头打印链表代码实例
作者:lilivian 时间:2021-12-28 12:13:41
问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值。
首先定义链表结点
public class ListNode {
int val;
ListNode next = null;
ListNode(int val){
this.val = val;
}
}
思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈。最后在遍历栈出栈。
public static Stack<Integer> printListReverse_Stack(ListNode listNode){
Stack<Integer> stack = new Stack<Integer>();
if(listNode != null){
ListNode p = listNode;
while(p != null){
stack.add(p.val);
p = p.next;
}
}
return stack;
}
思路2:直接遍历链表,按照头插法依次插入ArrayList即可
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素
ArrayList<Integer> print = new ArrayList<Integer>();
if(listNode == null){
return print;
}
int add = 0;
ListNode p = listNode;
while(p != null){
print.add(0, p.val);
p = p.next;
}
return print;
}
思路3:可以使用递归的思想(本质也是栈的思想)
public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){
ArrayList<Integer> print = new ArrayList<Integer>();
if(listNode == null){
return print;
}
print.addAll(printListReversely_Recursively(listNode.next));
print.add(listNode.val);
return print;
}
来源:http://blog.csdn.net/lilianforever/article/details/51830414
标签:java,链表
0
投稿
猜你喜欢
使用C#创建Windows服务的实例代码
2022-07-30 05:58:48
一文搞懂Android RecyclerView点击展开、折叠效果的实现代码
2023-02-17 14:52:24
C#实现FTP传送文件的示例
2022-06-24 01:15:20
java语言实现猜数字游戏
2023-11-24 00:19:38
c#开发cad预览图块步骤详解
2022-12-30 10:49:07
SpringBoot使用Redis实现分布式锁
2021-11-06 20:10:22
Java实现快速排序算法的完整示例
2022-10-15 11:57:40
C#中ref和out的区别浅析
2021-12-22 23:00:50
设计模式系列之组合模式及其在JDK和MyBatis源码中的运用详解
2022-12-27 12:56:57
JWT.net 操作实践方法
2022-04-09 16:01:28
详解SpringBoot中的tomcat优化和修改
2022-12-31 04:00:44
关于C#继承的简单应用代码分析
2021-10-28 13:11:31
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2023-11-26 15:05:59
C++ 中二分查找递归非递归实现并分析
2023-06-19 06:51:31
深入android Unable to resolve target 'android-XX'详解
2023-05-29 13:21:33
浅谈Java多进程程序的运行模式
2021-07-06 11:06:49
Java 中的变量类型
2022-05-27 20:00:19
DataGridView带图标的单元格实现代码
2021-08-07 16:50:04
重写hashCode()和equals()方法详细介绍
2023-11-24 16:13:33
centos下GitLab+Jenkins持续集成环境搭建(安装jenkins)
2023-05-13 05:02:40