[劍指offer][Java]從尾到頭打印鏈表

題目

輸入一個(gè)鏈表,按鏈表值從尾到頭的順序返回一個(gè)ArrayList。

程序核心思想

  • 從“從尾到頭”就可以聯(lián)想到棧,所以這個(gè)題目用java中自帶的棧來解決“從尾到頭”的要求。把所有的節(jié)點(diǎn)值入棧,然后節(jié)點(diǎn)值出棧進(jìn)入ArrayList,最后返回ArrayList即可。
  • 剩下來就是鏈表遍歷的問題了??梢詎ew一個(gè)節(jié)點(diǎn),指向鏈表頭,然后依次指向后面的節(jié)點(diǎn),進(jìn)行遍歷,直到鏈表結(jié)尾為止(new的節(jié)點(diǎn)指向的節(jié)點(diǎn)的next為null)。

Tips

  • 棧的使用
    創(chuàng)建:Stack<Integer> stack = new Stack<Integer>();
    入棧:stack.push(括號(hào)里填入棧的東西,類型為創(chuàng)建時(shí)泛型的類型)
    出棧:stack.pop();
    判斷棧是否為空:stack.empty();
  • ArrayList的使用
    創(chuàng)建:ArrayList<Integer> array = new ArrayList<Integer>();
    添加元素:array.add(括號(hào)里填添加的東西,類型為創(chuàng)建時(shí)泛型的類型)

代碼

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

        return array;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《劍指offer》面試題6:從尾到頭打印鏈表 題目:輸入一個(gè)鏈表的頭節(jié)點(diǎn),從尾到頭反過來打印出每個(gè)節(jié)點(diǎn)的值。(鏈表...
    打工這件小事閱讀 590評(píng)論 0 0
  • 輸入一個(gè)鏈表,按鏈表值從尾到頭的順序返回一個(gè)ArrayList。鏈表節(jié)點(diǎn)定義: 鏈表訪問是從頭到尾訪問的,而要從尾...
    lvlvforever閱讀 252評(píng)論 0 0
  • 題目描述 輸入一個(gè)鏈表,按鏈表值從尾到頭的順序返回一個(gè)ArrayList。 思路 思路一:利用棧的性質(zhì)。 先進(jìn)后出...
    Max_7閱讀 244評(píng)論 0 0
  • 題目描述:輸入一個(gè)鏈表,按鏈表值從尾到頭的順序返回一個(gè)ArrayList。 題目解釋:不同于LeetCode的20...
    小碧小琳閱讀 213評(píng)論 0 1
  • https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35...
    twilight_mao閱讀 326評(píng)論 0 0

友情鏈接更多精彩內(nèi)容