从尾到头打印链表

来源:互联网 发布:正知正见正思维 编辑:程序博客网 时间:2024/05/16 07:23

从尾到头打印链表

  • 描述

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

  • 思路

    1:由题意读者可以很清楚的观察到这是一个先进后出的性质,很明显可以采用栈来模拟实现
    2:由于可以通过栈实现,我们可以联想到是否可以使用递归,我们知道在很多情况下都是通过栈来进行消除递归的

  • AC代码递归实现

public ArrayList<Integer> printListFromTailToHead(ListNode listNode)//递归实现,递归中注意的是对于边界的判断 {       ArrayList<Integer>list=new ArrayList<Integer>();       if(listNode!=null){        if(listNode.next!=null)            {            list=printListFromTailToHead(listNode.next);        }        list.add(listNode.val);//当listNode为最后一个节点是将它的val值添加到list中    }        return list;    }
  • AC代码stack实现
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {        ArrayList<Integer>list=new ArrayList<Integer>();        Stack<Integer>stack=new Stack<Integer>();        while(listNode!=null)        {              stack.push(listNode.val);            listNode=listNode.next;                }        while(!stack.isEmpty())             list.add(stack.pop());        return list;    }
0 0