从尾到头打印链表(Java)

题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
思路
一开始忽视了右边的提示

*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }

int val提示了是整数,一开始想的是字符型,把ListNode转为一个StringBuffer,然后用reverse函数翻转,再赋值给ArrayList。
后来发现是整数,所以直接用数组就可以,比字符更简单方便。
问题
1.没有考虑到ListNode为空的情况,加上判断就可以。

ArrayList List = new ArrayList(); 
if(listNode==null)
{
	return List;
	//return null;
	//直接return null会报错,因为要求了返回ArrayList
}

错误提示
从尾到头打印链表(Java)
2.没有考虑到最后的边界情况,因为在最后一个节点也sum++,所以将数组的值赋给ArrayList时应该是List.add(a[sum-1-i]);而不是List.add(a[sum-i]);

通过代码

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        /*StringBuffer s=new StringBuffer();
        s.setLength(10000000);
        int len=0;
        while(listNode!=null)
        {
            s.setCharAt(len,(char)(listNode.val+48));
            len++;
            listNode=listNode.next;
        }
        s.setLength(len);
        StringBuffer s1=s.reverse();
        String s2=s1.toString();
        ArrayList List = new ArrayList(); 
        int i=0;
        for(i=0;i<len;i++)
        {
            List.add(s2.charAt(i));
        }
        return List;*/
        int[] a=new int[100000];
        int sum=0;
        int i=0;
        ArrayList List = new ArrayList(); 
        if(listNode==null)
        {
            return List;
        }
        while(listNode!=null)
        {
            a[sum]=listNode.val;
            sum++;
            listNode=listNode.next;
        }
        for(i=0;i<sum;i++)
        {
            List.add(a[sum-1-i]);
        }
        return List;
    }
}