题目描述:
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解题思路:
链表的遍历肯定是从头至尾的。而题目要求我们返回从尾到头的链表值,则想到用栈来实现。当遍历链表时,顺序遍历,将每个结点的值依次压栈。待遍历完整个链表,再开始依次出栈,将出栈元素依次存入list中,即得到结果。
AC代码:
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(listNode == null){
return list;
}
Stack<Integer> stack = new Stack<Integer>();
//入栈
while(listNode != null) {
stack.add(listNode.val);
listNode = listNode.next;
}
//出栈
for(int i = stack.size() - 1;i >= 0; i--){
list.add(stack.pop());
}
return list;
}