1. 程式人生 > 實用技巧 >劍指03.從尾到頭列印連結串列

劍指03.從尾到頭列印連結串列

題目描述

輸入一個連結串列,按連結串列從尾到頭的順序返回一個ArrayList。

思路

方法一:藉助棧的“後進先出”實現。從頭到尾遍歷連結串列,每經過一個節點,就把節點壓入棧中。遍歷完後,再從棧頂逐個輸出節點的值。

方法二:用遞迴實現(遞迴的本質就是一個棧結構)。每訪問到一個節點的時候,先遞迴輸出它後面的節點,再輸出該節點自身的值。

方法一

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/ import java.util.Stack; import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<Integer>(); while (listNode != null){ stack.push(listNode.val); listNode
= listNode.next; } ArrayList<Integer> list = new ArrayList<Integer>(); while (!stack.isEmpty()){ list.add(stack.pop()); } return list; } }

☆☆方法二

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/ import java.util.ArrayList; public class Solution { ArrayList<Integer> list = new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if (listNode != null){ printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } }