剑指offfer 从尾到头打印链表

题目:

输入一个链表的头结点,从尾到头打印每个节点的值。

思路:是否可以修改输入的数据,当然用栈就能反过来输出

public class Solution{

    //栈
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList list = new ArrayList();
        if(listNode == null){
            return list;
        }

        Stack<Integer> stack = new Stack<>();
        while(listNode.next != null){
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        stack.push(listNode.val);
        while(!stack.isEmpty()){
            list.add(stack.pop());
        }
        return list;
    }

    //递归
    public ArrayList<Integer> printListFromTailToHead1(ListNode listNode){
        ArrayList<Integer> list = new ArrayList();
        if(listNode != null){
            if(listNode.next != null){
                list = printListFromTailToHead1(listNode.next);   //这已经是返回了当前node之后所有的了
            }
            list.add(listNode.val);
        }
        return list;
    }
        
    //集合的特性,前提规定可以修改
    public ArrayList<Integer> printListFromTailToHead2(ListNode listNode){
        ArrayList<Integer> list = new ArrayList<Integer>();

        while(listNode != null){
            list.add(listNode.val);
            listNode = listNode.next;
        }

        Collections.reverse(list);
        return list;
    }

}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jae_Wang/article/details/80322524
个人分类: 剑指Offer
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

剑指offfer 从尾到头打印链表

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭