题目描述

输入一个链表,按链表值从尾到头的顺序返回一个 ArrayList。

解题思路

我们知道链表是单向的,但是要求从尾到头的按链表值返回,很容易想到 Stack 这个数据结构。栈的特点就是先进后出,我们只需要遍历这个链表,把访问到的值放到栈里面,最后再从栈里面取值返回到一个 ArrayList 即可。

代码实现

  1. import java.util.ArrayList;
  2. import java.util.Stack;
  3. public class Problem3 {
  4. class ListNode {
  5. int val;
  6. ListNode next;
  7. }
  8. public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
  9. ArrayList<Integer> ans = new ArrayList<Integer>();
  10. Stack<Integer> temp = new Stack<Integer>();
  11. ListNode head = listNode;
  12. while(head!=null){
  13. temp.push(head.val);
  14. head=head.next;
  15. }
  16. while(temp.size()!=0){
  17. ans.add(temp.peek());
  18. temp.pop();
  19. }
  20. return ans;
  21. }
  22. }