首页 > 代码库 > 5、从尾部打印链表

5、从尾部打印链表

 思路1:用额外存储元素,然后遍历输出。如栈或arrayList,前插入,没错都插入到最前面的节点。
    import java.util.ArrayList;
    public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode == null){
            return new ArrayList<>();
        }
        int num = 0;
        ListNode head = listNode;
        //计算链表长度
        while(listNode != null) {
            num++;
            listNode = listNode.next;
           
        }    
        ArrayList<Integer> lists = new ArrayList<>();        
       
        //倒序插入
        while(head != null) {
            lists.add(0, head.val);

            head = head.next;        
        }       
        return lists;
    }
    }

 思路2:递归实现。每当访问一个节点,就递归输出后面的节点,然后输出自己。缺点:当链表长的时候,递归深度太深,会调用栈溢出。
测试:
只有一个节点,有多个节点。
空指针。

5、从尾部打印链表