跟我一起學算法系列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,371評論 0 19
  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,172評論 0 12
  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 17,941評論 2 36
  • //leetcode中還有花樣鏈表題,這里幾個例子,冰山一角 求單鏈表中結點的個數----時間復雜度O(n)這是最...
    暗黑破壞球嘿哈閱讀 1,540評論 0 6
  • 終于像之前一樣早起學習了,一身清新,晚上的身體太疲憊了,只想睡覺! 感謝早起的自己!今日閱讀下來老師推薦的百...
    yoga麗閱讀 221評論 2 1