1. 程式人生 > >從尾到頭列印連結串列(java版)

從尾到頭列印連結串列(java版)

【題目描述】輸入一個連結串列,從尾到頭列印連結串列每個節點的值。

【解題思路1】
//1. 遍歷連結串列,使用一個ArrayList儲存各個連結串列結點。
//2. 將ArrayList關於對稱中心,進行翻轉。得到的ArrayList即為從尾到頭列印的順序。

//實現一

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> arr = new
ArrayList<Integer>(); if(listNode == null){ return arr; } while(listNode.next != null){ arr.add(listNode.val); listNode = listNode.next; } arr.add(listNode.val); int temp = 0; for(int inx=0, end=arr.size()-1
; inx<end; inx++, end--){ temp = arr.get(inx); arr.set(inx, arr.get(end)); arr.set(end, temp); } return arr; } }
//實現二

import java.util.ArrayList;
import java.util.Collections;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<
Integer> list = new ArrayList<Integer>(); while(listNode != null){ list.add(listNode.val); listNode = listNode.next; } Collections.reverse(list);//使用Collections的reverse方法,直接將list反轉 return list; } }

【解題思路2】
//1. 利用遞迴遍歷連結串列
//2. 得到的即為所求,從尾到頭的序列。

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

【解題思路3】
//1. 遍歷連結串列,從頭結點開始,依次入棧。
//2. 棧不空的情況下,依次彈出棧頂元素,存入ArrayList中,返回從尾到頭的連結串列序列。


import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> s = new Stack<Integer>();
        ArrayList<Integer> arr = new ArrayList<Integer>();
        if(listNode == null){
            return arr;
        }
        while(listNode.next !=null){
            s.push(listNode.val);
            listNode = listNode.next;
        }
        s.push(listNode.val);
        while(!s.empty()){
            arr.add(s.pop());
        }
        return arr;
    }
}