1. 程式人生 > >劍指offer第3題:從尾到頭打印鏈表

劍指offer第3題:從尾到頭打印鏈表

off 輸出結果 pre col 結構 ava image stack 鏈表

技術分享圖片

方法一:采用棧來存儲,用ArrayList保存。註意題目給出的輸出結果是ArrayList

import java.util.ArrayList;
import java.util.Stack;


public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack=new Stack<>();
        ArrayList<Integer> arrayList=new ArrayList<>();
        while (listNode!=null){
          stack.push(listNode.val);
            listNode=listNode.next;
        }
        while (!stack.isEmpty()){
            arrayList.add(stack.pop());
        }
        return arrayList;
    }
}
class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}

  方法二: 遞歸在本質上是一個棧結構,於是很自然的想到了用遞歸來實現。註意 ArrayList的創建要在函數的外面,不然每次又去重新創建了該對象,導致最後只有一個元素。static加上去出錯,至於原因我還要再看一下。

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

加入在前面加入static之後的結果:在IDE裏面是可以跑通的,另外,把static的變量放入方法裏面是會有語法錯誤的(Java有,c、c++沒有錯誤)

技術分享圖片

技術分享圖片

劍指offer第3題:從尾到頭打印鏈表