從尾到頭打印鏈表

輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。
鏈表節點定義:

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/

鏈表訪問是從頭到尾訪問的,而要從尾到頭的訪問鏈表,明顯是一個后進先出的數據結構,也就是“棧”,因此我們可以使用一個棧,對鏈表從頭到尾訪問,進棧,在出棧。考慮到棧和遞歸的緊密關系,我們可以使用遞歸來實現程序,注意在鏈表過長時可能會棧溢出。
代碼僅供參考

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list = new ArrayList<>();
            if(listNode == null){
                return list;
            }
            recurVisitList(listNode,list);
            return list;
    }
    private void recurVisitList(ListNode node,ArrayList<Integer> list){
            if(node == null){
                return;
            }
            recurVisitList(node.next,list);
            list.add(node.val);
    }
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容