一、题目

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

二、解题思路

使用栈的方式进行。

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

三、解题代码

  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. }