劍指offer第二版面試題5:從尾到頭打印鏈表(JAVA版)

題目描述: 輸入一個鏈表,從尾到頭打印鏈表每一個節點的值。返回新鏈表。

java

import java.util.Stack;

//定義鏈表結構
class ListNode {
    int value;
    ListNode next;
}

public class PrintListReverse {
    public static void main(String[] args) {
        ListNode node1 = new ListNode();
        ListNode node2 = new ListNode();
        ListNode node3 = new ListNode();
        node1.value = 1;
        node2.value = 2;
        node3.value = 3;
        node1.next = node2;
        node2.next = node3;
        node3.next = null;

        //printListReverseByStack(node1); // 調用棧方法
        printListReverseByRecursion(node1); // 調用遞歸方法
    }

    //利用棧先進後出的思想來解決問題
    public static void printListReverseByStack(ListNode headNode) {
        //初始化棧
        Stack<ListNode> stack=new Stack<>();
        //入棧
        while(headNode!=null){
            stack.add(headNode);
            headNode=headNode.next;
        }
        //輸出
        while(!stack.isEmpty()){
            System.out.println(stack.pop().value);
        }
    }
    
    //利用遞歸實現
    private static void printListReverseByRecursion(ListNode headNode) {
        if(headNode==null){
            return;
        }
        printListReverseByRecursion(headNode.next);
        System.out.println(headNode.value);
    }
}
相關文章
相關標籤/搜索