從尾到頭打印鏈表

劍指offer第3題:
輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。

理解:

本題中的關鍵詞是從尾到頭,考察當遇到反向輸出時是否可以想到使用堆棧特性來輔助輸出
現將所有節點都壓入堆棧,然後再依次彈出,此時彈出的順序就是從尾到頭的順序了。注意ArrayList中存放的是整型,而不是ListNode型,這點要注意,否則是錯的。

import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list = new ArrayList<>();
        if(listNode == null){
            return list; //如果第一個結點就是null,那麼就直接把新建的list返回
        }
        //利用堆棧的特點
        Stack<ListNode> stack = new Stack<>();
        while(listNode != null){ //將所有的結點依次壓入
            stack.push(listNode);
            listNode = listNode.next;
        }
        while(!stack.isEmpty()){ //全部壓入之後現在開始依次彈出,彈出的內容存到list當中
            list.add(stack.pop().val);
        }
        return list; //注意返回類型正確
    }
}
知識點:
  • 使用ArrayList<>()要有“import java.util.ArrayList;”;
  • 使用Stack<>()要有“import java.util.Stack;”;
  • 向ArrayList中添加元素,使用add()方法;
  • 堆棧壓入:xx.push(xxx);
  • 堆棧彈出:xx.pop();
  • 堆棧爲空:xx.isEmpty();
發佈了64 篇原創文章 · 獲贊 95 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章