从尾到头打印链表
题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
一般来说,遇到这种问题,递归是最容易想到的。同时也会有一个非递归的版本,本题可以有两个思路。
1.栈
利用栈的先进后出特性,正好符合本题需求。如下
Stack <Integer> stack = new Stack <Integer>();
while(listNode!= null){
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList <Integer> list = new ArrayList <Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
return
2.递归
ArrayList<Integer> list = new ArrayList();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null)
printListFromTailToHead(listNode.next);
list.add(listNode.val);
return list;
}
还是递归看起来更简洁一些。