剑指Offer-【面试题05:从头到尾打印链表】

时间:2023-03-09 16:41:49
剑指Offer-【面试题05:从头到尾打印链表】
package com.cxz.question5;

import java.util.Stack;

/*
 * 输入个链表的头结点,从尾到头反过来打印出每个结点的值。
 * */
public class Demo5 {

    /**
     * 结点对象
     * @author CXZ
     *
     */
    public static class ListNode {
        int val; //结点的值
        ListNode next; //下一个结点
    }

    /**
     * 输入个链表的头结点,从尾到头反过来打印出每个结点的值
     * 使用栈的方式进行
     * @param root
     */
    /*public static void printListInverse(ListNode root) {
        Stack<ListNode> stack = new Stack<>();
        while (root != null) {
            stack.push(root);
            root = root.next;
        }
        ListNode temp;
        while (!stack.isEmpty()) {
            temp = stack.pop();
            System.out.println(temp.val+ " ");
        }

    }*/

    /**
     * 输入个链表的头结点,从尾到头反过来打印出每个结点的值
     * 递归
     * @param root
     */
    public static void printListInverseByRecursion(ListNode root) {
        if (root != null) {
            printListInverseByRecursion(root.next);
            System.out.println(root.val + " ");
        }
    }

    public static void main(String[] args) {

        ListNode root = new ListNode();
        root.val = ;
        root.next = new ListNode();
        root.next.val = ;
        root.next.next = new ListNode();
        root.next.next.val = ;
        root.next.next.next = new ListNode();
        root.next.next.next.val = ;
        root.next.next.next.next = new ListNode();
        root.next.next.next.next.val = ;

        //printListInverse(root);
        System.out.println();
        printListInverseByRecursion(root);
    }

}