package java2019;
import java.util.ArrayList;
import java.util.Stack;
//输入单链表,逆序打印链表
public class Demo3 {
//1.利用堆栈先进后出实现
public ArrayList printListFromTailToHead1(ListNode listNode){
Stack stack = new Stack();
while(listNode!=null){
stack.push(listNode.getVal());
listNode=listNode.getNext();
}
ArrayList list = new ArrayList();
while(!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
//递归调用
ArrayList<Integer> list = new ArrayList<Integer>(); //这个得放在方法外
public ArrayList<Integer> printListFromTailToHead2(ListNode listNode){
if(listNode!=null){
printListFromTailToHead2(listNode.getNext());
list.add(listNode.getVal());
}
return list;
}
public static void main(String[] args) {
ListNode root = new ListNode(1);
ListNode n1 = new ListNode(2);
ListNode n2 = new ListNode(3);
ListNode n3 = new ListNode(4);
root.setNext(n1);
n1.setNext(n2);
n2.setNext(n3);
Demo3 d3 = new Demo3();
ArrayList<Integer> list = d3.printListFromTailToHead2(root);
for(int a : list){
System.out.print(a);
}
}
}
本文介绍了一种使用Java实现的逆序打印链表的方法,通过两种方式:利用堆栈的先进后出特性以及递归调用来实现链表元素的逆序输出。提供了完整的代码示例,包括链表节点定义、逆序打印的实现以及主函数测试。
2178

被折叠的 条评论
为什么被折叠?



