1、头插法
/**
* 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
* @param listNode
* @return
*/
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
ListNode tmp = listNode;
while (tmp!=null){
list.add(0,tmp.val);
tmp = tmp.next;
}
return list;
}
2、使用栈
/**
* 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。用栈的方式
* @param list
* @return
*/
public static List<Integer> printListFromTailToHeadStack(ListNode listNode){
Stack<Integer> stack = new Stack<>();
ListNode tmp = listNode;
List<Integer> tempList = new ArrayList<>();
while (tmp!=null){
stack.push(tmp.val);
tmp = tmp.next;
}
while (!stack.isEmpty()){
tempList.add(stack.pop());
}
return tempList;
}