从剑指offer中,逆序输出一个链表
解题思路如果按照正常方式只能是从表头到表尾方式输出
链表结构代码如下:
public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
在存在指针域的情况下,链表结构总是从前到后访问
通过堆栈方式将链表从头到尾存入,再输出只是一种方式,通过遍历结点方式,递归反序输出链表的方式也是可以,原理清楚了,如果自己写的话,也可以参考这种方式去逆序类似链表结构的数据
此处是递归方法的代码:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> retList=null;
if(listNode!=null){
retList=printListFromTailToHead(listNode.next);
retList.add(listNode.val);
}
return retList==null?new ArrayList<Integer>():retList;
//new避免当输入为Null,且返回null时,tese系统报空指针
}
}
按照debug方式查看运行过程,发现是将ArrayList返回后,每次将调用前一个结点,执行add方法,将数据存进去,从后往前一个个存进去