思路就是递归。
import java.util.ArrayList; /** * Created by itworker365 on 5/12/2017. */ public class MainListNodeFromTailToHead { public static void main(String[] args) { ListNode listNode = new ListNode(1); ListNode listNode1 = new ListNode(2); ListNode listNode2 = new ListNode(3); ListNode listNode3 = new ListNode(4); ListNode listNode4 = new ListNode(5); listNode.setNext(listNode1); listNode1.setNext(listNode2); listNode2.setNext(listNode3); listNode3.setNext(listNode4); MainListNodeFromTailToHead mainListNodeFromTailToHead = new MainListNodeFromTailToHead(); ArrayList<Integer> res = mainListNodeFromTailToHead.printListFromTailToHead(listNode); System.out.println(res.toString()); } //递归添加 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> res = new ArrayList<>(); if (listNode == null) { return res; } addListRecur(listNode, res); return res; } public ArrayList<Integer> addListRecur(ListNode listNode, ArrayList<Integer> list){ if (listNode!= null && listNode.next != null) { addListRecur(listNode.next, list); } list.add(listNode.val); return list; } } class ListNode{ int val; ListNode next = null; ListNode(int val) { this.val = val; } public void setNext(ListNode next) { this.next = next; } }