• 一、题目
  • 二、解题思路
    • 三、解题代码

    一、题目

    输入个链表的头结点,从尾到头反过来打印出每个结点的值。

    二、解题思路

    使用栈的方式进行。

    将链表从头到尾压入栈内,出栈的过程就对应着从尾到头。

    三、解题代码

    1. public class Test {
    2. /**
    3. * 结点对象
    4. */
    5. public static class ListNode {
    6. int val; // 结点的值
    7. ListNode nxt; // 下一个结点
    8. }
    9. /**
    10. * 输入个链表的头结点,从尾到头反过来打印出每个结点的值
    11. * 使用栈的方式进行
    12. *
    13. * @param root 链表头结点
    14. */
    15. public static void printListInverselyUsingIteration(ListNode root) {
    16. Stack<ListNode> stack = new Stack<>();
    17. while (root != null) {
    18. stack.push(root);
    19. root = root.nxt;
    20. }
    21. ListNode tmp;
    22. while (!stack.isEmpty()) {
    23. tmp = stack.pop();
    24. System.out.print(tmp.val + " ");
    25. }
    26. }
    27. /**
    28. * 输入个链表的头结点,从尾到头反过来打印出每个结点的值
    29. * 使用递归的方式进行
    30. *
    31. * @param root 链表头结点
    32. */
    33. public static void printListInverselyUsingRecursion(ListNode root) {
    34. if (root != null) {
    35. printListInverselyUsingRecursion(root.nxt);
    36. System.out.print(root.val + " ");
    37. }
    38. }
    39. }