可以使用
Stack<Integer> stack = new Stack<>();
来实现从尾到头打印链表,而递归在本质上也是栈结构,所以最最简洁的代码是用递归实现;
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; public class Solution { ArrayList<Integer> list = new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } }
完整代码如下:
import java.util.ArrayList; public class ReversePrintLink { public static void main(String[] args){ ListNode list1=new ListNode(1); ListNode list2=new ListNode(2); ListNode list3=new ListNode(3); list1.next=list2; list2.next=list3; list3.next=null; Solution solution=new Solution(); ArrayList<Integer> list = solution.printListFromTailToHead(list1); list.forEach(item->{ System.out.println(String.valueOf(item)); }); } } class Solution { ArrayList<Integer> list = new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } } class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }