题目

  • 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

思路

  • 剑指offer的思路,递归的思路,只要链表不为空,一直往后进行遍历,然后直到到达链表的末尾,就开始用数组保存下来结果

代码


 将链表反转,然后依次打印信息进入ArrayList链表里面
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> arraylist = new ArrayList();
        //反转链表
            ListNode resulthead = null;
            ListNode ahead = listNode;
            ListNode before= null;
            if(ahead==null){
                return arraylist;
            }
            if(ahead.next==null){
                arraylist.add(ahead.val);
                return arraylist;
            }
            while(ahead!=null){
                ListNode next = ahead.next;
               if(next==null)
                   resulthead=ahead;
                ahead.next = before;
                before = ahead;
                ahead = next;
            }
            //保存链表数据进入arraylist中
            while(resulthead!=null){
                arraylist.add(resulthead.val);
                resulthead=resulthead.next;
             }
             
        return arraylist;
    }   
}