利用栈的特性先进后出,实现从尾到头打印链表,代码如下
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr = new ArrayList();
Stack<Integer> stack = new Stack<>();
while(listNode != null){
stack.push(listNode.val);//压栈
listNode = listNode.next;//指针后移
}
while(stack.size()>0){
arr.add(stack.pop());//弹出栈,并添加到list集合中
}
return arr;
}
}
递归版实现,利用this调用方法,实现递归添加
到最后一个的时候方法栈开始返回
实现从尾到头打印
原理与上面类似,只不过使用的是jvm的方法栈
public class Solution {
ArrayList<Integer> arrayList=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
this.printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return arrayList;
}
}