剑指Offer(书):从尾到头打印链表

题目:输入一个链表,按链表值从尾到头的顺序返回一个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;
    }

 

posted @ 2018-08-04 20:33  liter7  阅读(97)  评论(0编辑  收藏  举报