leetcode 链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/

题目

image.png

解法

  1. 从头到尾遍历一次链表,值用栈保存,遍历到链表尾部后对栈中数据输出到数组中

    1. /**
    2. * Definition for singly-linked list.
    3. * public class ListNode {
    4. * int val;
    5. * ListNode next;
    6. * ListNode(int x) { val = x; }
    7. * }
    8. */
    9. class Solution {
    10. public int[] reversePrint(ListNode head) {
    11. Stack<Integer> stack=new Stack<>();
    12. ListNode node=head;
    13. while(node!=null){
    14. stack.push(node.val);
    15. node=node.next;
    16. }
    17. int[] res=new int[stack.size()];
    18. int i=0;
    19. while(!stack.isEmpty()){
    20. res[i++]=stack.pop();
    21. }
    22. return res;
    23. }
    24. }
  2. 对链表进行两次遍历,一次获取长度,一次填充数组

    1. /**
    2. * Definition for singly-linked list.
    3. * public class ListNode {
    4. * int val;
    5. * ListNode next;
    6. * ListNode(int x) { val = x; }
    7. * }
    8. */
    9. class Solution {
    10. public int[] reversePrint(ListNode head) {
    11. // 使用两次遍历,一次获取链表长度,一次填充数组
    12. // 遍历游标
    13. ListNode cur = head;
    14. // 链表长度
    15. int len = 0;
    16. while (cur != null){
    17. len++;
    18. cur = cur.next;
    19. }
    20. int[] res = new int[len];
    21. // 重置遍历游标
    22. cur = head;
    23. while (--len >= 0){
    24. res[len] = cur.val;
    25. cur = cur.next;
    26. }
    27. return res;
    28. }
    29. }