题目链接

示例

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

  1. 输入:
  2. head = [1,3,2]
  3. 输出:
  4. [2,3,1]

解题思路

想到使用 先入后出
1. 实例化一个栈
2. 遍历链表,依次放入栈内,遍历链表是通过指针的指向来遍历
3. 通过stack.size()来获得栈的大小,创建一个相同大小的数组
4. 弹栈stack.pop()取出数据,注意此时取出的是链表,需要.val()获得值,存入数组中

代码

  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. 先入后出
  14. 1. 实例化一个栈
  15. 2. 遍历链表,依次放入栈内,遍历链表是通过指针的指向来遍历
  16. 3. 通过stack.size()来获得栈的大小,创建一个相同大小的数组
  17. 4. 弹栈stack.pop()取出数据,注意此时取出的是链表,需要.val()获得值,存入数组中
  18. */
  19. Stack<ListNode> stack = new Stack<>();
  20. ListNode temp = head;
  21. while(temp!=null){
  22. stack.push(temp);
  23. temp = temp.next;
  24. }
  25. int size = stack.size();
  26. int[] newStr = new int[size];
  27. for(int i=0; i<size; i++){
  28. newStr[i] = stack.pop().val;
  29. }
  30. return newStr;
  31. }
  32. }