一. 题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
二. 方法思路
(1)直接声明两个集合,然后遍历数组的时候同时存进其中一个集合中,最后反序存储到另一个集合中(显然这种方法很蠢,建议用第二种!哈哈)。
(2)借助栈实现,或使用递归的方法。
三. 代码实现
(1)
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr = new ArrayList<>();
if(listNode == null)
return arr;
ListNode node = new ListNode(0);
node = listNode;
while(node != null)
{
arr.add(node.val);
node = node.next;
}
ArrayList<Integer> arr2 = new ArrayList<>();
for(int i = arr.size() - 1; i >= 0 ;i--)
arr2.add(arr.remove(i));
return arr2;
}
}
(2)栈结构
import java.util.*;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
if(listNode == null)
return list;
Stack<ListNode> stack = new Stack<>();
while(listNode != null){
stack.push(listNode);
listNode = listNode.next;
}
while(!stack.isEmpty()){
list.add(stack.pop().val);
}
return list;
}
}