美文网首页剑指Offer题解
从尾到头打印链表

从尾到头打印链表

作者: lvlvforever | 来源:发表于2018-07-06 17:11 被阅读15次

    输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
    链表节点定义:

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

    链表访问是从头到尾访问的,而要从尾到头的访问链表,明显是一个后进先出的数据结构,也就是“栈”,因此我们可以使用一个栈,对链表从头到尾访问,进栈,在出栈。考虑到栈和递归的紧密关系,我们可以使用递归来实现程序,注意在链表过长时可能会栈溢出。
    代码仅供参考

    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            ArrayList<Integer> list = new ArrayList<>();
                if(listNode == null){
                    return list;
                }
                recurVisitList(listNode,list);
                return list;
        }
        private void recurVisitList(ListNode node,ArrayList<Integer> list){
                if(node == null){
                    return;
                }
                recurVisitList(node.next,list);
                list.add(node.val);
        }
    

    相关文章

      网友评论

        本文标题:从尾到头打印链表

        本文链接:https://www.haomeiwen.com/subject/byjbuftx.html