劍指Offer(面試題6-1)——從尾到頭打印鏈表

劍指 Offer 面試題(6-1)

題目

輸入一個鏈表的頭結點,按照 從尾到頭 的順序返回節點的值。

返回的結果用數組存儲。

樣例

輸入:[2, 3, 5]
返回:[5, 3, 2]

思路

​ 在這裏我們不再解釋與反轉鏈表思路相同的做法(用三個指針,改變鏈表結構,想了解可以看這裏——反轉鏈表

​ 這裏我們提供另一種不改變鏈表結構的方式,首先我們審讀題意,將鏈表從尾到頭輸出,也就是類似於後進先出,這可以讓我們聯想到一種數據結構——棧,我們可以定義一個棧,然後遍歷這個鏈表,從頭到尾將每個值入棧,隨後再將棧中數據依次出棧,即可達到從頭到尾打印鏈表的目的,我使用了一個數組來模擬棧,下面是代碼

代碼

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] printListReversingly(ListNode head) {
        int[] stack = new int[100010];
        int idx = 0;
        int length = 0;
        while (head != null) {
            stack[idx++] = head.val;
            length++;
            head = head.next;
        }
        int[] res = new int[length];
        for (int i = 0; i < length; ++i) res[i] = stack[--idx];
        return res;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章