美文网首页Leetcode算法数据结构和算法分析
[剑指offer] 从尾到头打印链表

[剑指offer] 从尾到头打印链表

作者: 繁著 | 来源:发表于2018-08-09 23:27 被阅读0次

    本文首发于我的个人博客:尾尾部落

    题目描述

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

    解题思路

    一种方法是利用栈来实现;
    另外一种方法是利用三个指针把链表反转,关键是 r 指针保存断开的节点。


    image

    参考代码

    /**
    *    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) {
            if(listNode == null)
                return new ArrayList<Integer>();
            ListNode head = listNode;
            ListNode cur = listNode.next;
            while( cur!= null){
                ListNode temp = cur.next;
                cur.next = head;
                head = cur;
                cur = temp;
            }
            //此时listNode的next还指向第二个node,所以要让listNode.next=null,防止循环
            listNode.next = null;
            ArrayList<Integer> res = new ArrayList<Integer>();
            while(head !=null){
                res.add(head.val);
                head = head.next;
            }
            return res;
        }
    }
    

    相关文章

      网友评论

        本文标题:[剑指offer] 从尾到头打印链表

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