题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
分析:若不允许修改原链表的值,则可以使用栈来实现,也可以使用另外一个ArrayList做中转的数据。
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> arrayList = new ArrayList<>(); Stack<Integer> stack = new Stack<>(); ListNode temp = listNode; while (temp!=null){ stack.push(temp.val); temp = temp.next; } while (!stack.isEmpty()){ arrayList.add(stack.pop()); } return arrayList; } public ArrayList<Integer> printListFromTailToHead1(ListNode listNode) { ArrayList<Integer> arrayList = new ArrayList<>(); ArrayList<Integer> tempList = new ArrayList<>(); ListNode temp = listNode; while (temp!=null){ tempList.add(temp.val); temp = temp.next; } for(int i=tempList.size()-1;i>=0;i--){ arrayList.add(tempList.get(i)); } return arrayList; }