跟我一起学算法系列5---从尾到头打印链表

1.题目描述
输入一个链表,从尾到头打印链表每个节点的值。

2.算法分析
这个题目有两种方式可以解。一种方式是采用递归,链表的首节点递归,直到最后一个节点先添加到list里。

第二种方式是利用Stack的特殊性,先进后出,先将所有节点从头到尾依次添加到栈,然后依次出栈。

3.代码实例
(1)递归

ArrayList<Integer> mList = new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
        if(null != listNode)
    {
        if(null != listNode.next)
        {
        mList = printListFromTailToHead(listNode.next);
        }
            
            mList.add(new Integer(listNode.val));
    }
        
    return mList;
}

(2)利用Stack

public ArrayList<Integer> printListFromTailToHead(ListNode listNode){ 
        ArrayList<Integer> mList = new ArrayList<Integer>();
        ListNode head = listNode;
        Stack<Integer> stack = new Stack<Integer>();
    
        while(null != head)
        {
            stack.push(new Integer(head.val));
            head = head.next;
        }
        
        while(!stack.isEmpty())
        {
            mList.add(stack.pop());
        }
        
        return mList;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,357评论 0 19
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,143评论 0 12
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,909评论 2 36
  • //leetcode中还有花样链表题,这里几个例子,冰山一角 求单链表中结点的个数----时间复杂度O(n)这是最...
    暗黑破坏球嘿哈阅读 1,533评论 0 6
  • 终于像之前一样早起学习了,一身清新,晚上的身体太疲惫了,只想睡觉! 感谢早起的自己!今日阅读下来老师推荐的百...
    yoga丽阅读 212评论 2 1